Skip to content

Commit f3412e4

Browse files
committed
Revert "Add support for custom validation contexts in resource creation and update"
This reverts commit fea2bb7.
1 parent 0e353e0 commit f3412e4

3 files changed

Lines changed: 2 additions & 85 deletions

File tree

app/controllers/administrate/application_controller.rb

Lines changed: 2 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ def create
5757
contextualize_resource(resource)
5858
end
5959

60-
if resource.save(context: validation_contexts_on_create(resource))
60+
if resource.save
6161
yield(resource) if block_given?
6262
redirect_to(
6363
after_resource_created_path(resource),
@@ -73,9 +73,7 @@ def create
7373
end
7474

7575
def update
76-
requested_resource.assign_attributes(resource_params)
77-
78-
if requested_resource.save(context: validation_contexts_on_update(requested_resource))
76+
if requested_resource.update(resource_params)
7977
redirect_to(
8078
after_resource_updated_path(requested_resource),
8179
notice: translate_with_resource("update.success"),
@@ -316,26 +314,6 @@ def authorize_resource(resource)
316314
def contextualize_resource(resource)
317315
end
318316

319-
# Override this if you want to provide additional validation contexts.
320-
#
321-
# @param resource [ActiveRecord::Base] The resource to be validated.
322-
# @return [Array<Symbol>] The validation contexts to be used.
323-
def validation_contexts_on_create(resource)
324-
default_validation_contexts(resource)
325-
end
326-
327-
# Override this if you want to provide additional validation contexts.
328-
#
329-
# @param resource [ActiveRecord::Base] The resource to be validated.
330-
# @return [Array<Symbol>] The validation contexts to be used.
331-
def validation_contexts_on_update(resource)
332-
default_validation_contexts(resource)
333-
end
334-
335-
def default_validation_contexts(resource)
336-
resource.new_record? ? [:create] : [:update]
337-
end
338-
339317
def paginate_resources(resources)
340318
resources.page(params[:_page]).per(records_per_page)
341319
end

docs/customizing_controller_actions.md

Lines changed: 0 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -117,30 +117,3 @@ def create
117117
end
118118
end
119119
```
120-
121-
## Validation Contexts
122-
123-
You can customize the context when saving a resource in the controller.
124-
For example, with the following settings, regular admins are required to input a name, but super admins can update the resource *without* a name.
125-
126-
```ruby
127-
# Model
128-
validates :name, presence: true, on: :save_by_regular_admin
129-
130-
# Controller
131-
def validation_contexts_on_create(resource)
132-
if current_user.super_admin?
133-
super + [:save_by_super_admin]
134-
else
135-
super + [:save_by_regular_admin]
136-
end
137-
end
138-
139-
def validation_contexts_on_update(resource)
140-
if current_user.super_admin?
141-
super + [:save_by_super_admin]
142-
else
143-
super + [:save_by_regular_admin]
144-
end
145-
end
146-
```

spec/controllers/admin/application_controller_spec.rb

Lines changed: 0 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -192,38 +192,4 @@ def resource_resolver
192192
end
193193
end
194194
end
195-
196-
describe "validation contexts" do
197-
render_views
198-
controller(Admin::ProductsController) do
199-
def validation_contexts_on_create(resource)
200-
super + [:some_unclear_situation]
201-
end
202-
203-
def validation_contexts_on_update(resource)
204-
super + [:some_unclear_situation]
205-
end
206-
end
207-
208-
context "on create" do
209-
it "raise a validation error due to custom validation context" do
210-
params = attributes_for(:product)
211-
post :create, params: {product: params}
212-
213-
expect(response).to have_http_status(:unprocessable_entity)
214-
expect(response.body).to include("Product meta tag can&#39;t be blank")
215-
end
216-
end
217-
218-
context "on update" do
219-
it "raise a validation error due to custom validation context" do
220-
product = create(:product, product_meta_tag: nil)
221-
params = {name: "New Name"}
222-
put :update, params: {id: product.to_param, product: params}
223-
224-
expect(response).to have_http_status(:unprocessable_entity)
225-
expect(response.body).to include("Product meta tag can&#39;t be blank")
226-
end
227-
end
228-
end
229195
end

0 commit comments

Comments
 (0)