Silne parametry nie działają
Z Ruby 1.9.3, Rails 3.2.13, Strong_parameters 0.2.1:
Śledziłem wszystkie wskazania w samouczkach i widowiskach kolejowych, ale nie mogę uzyskać działania parametrów strong_parametr. Powinien być czymś naprawdę prostym, ale nie widzę, gdzie jest błąd.
config / initializers / strong_parameters.rb:
ActiveRecord::Base.send(:include, ActiveModel::ForbiddenAttributesProtection)
config / application.rb
config.active_record.whitelist_attributes = false
app / models / product.rb
class Product < ActiveRecord::Base
end
app / controllers / products_controller.rb:
class ExpedientesController < ApplicationController
...
def create
@product = Product.new(params[:product])
if @product.save
redirect_to @product
else
render :new
end
end
end
Zgodnie z oczekiwaniami powoduje to wyjątek Forbidden Attributes. Ale kiedy przeprowadzam się do:
...
def create
@product = Product.new(product_params)
# and same flow than before
end
private
def product_params
params.require(:product).permit(:name)
end
Następnie, jeśli przejdę do formularza i wprowadzę „Nazwa: produkt 1” i „Kolor: czerwony”, żaden wyjątek nie zostanie zgłoszony; nowy produkt jest zapisywany w bazie danych bez koloru, ale z odpowiednią nazwą.
Co ja robię źle?