Пожалуйста, используйте новую рекомендованную модель защиты для params(strong_parameters) или добавьте `protected_attributes` в ваш gemfile
Это произошло, когда я добавил attr_accessible в свою модель отношений.
class Relationship < ActiveRecord::Base
attr_accessible :followed_id
end
Без использования Devise или самоцвета protected_attributes, как обойти это? Я знаю, что в контроллерах вы вызываете частный метод, требующий и разрешающий поля. Это то, что вы должны сделать в модели тоже? Что такое конвенция здесь?
Спасибо!
1 ответ
В Rails 4 вы используете Сильные Параметры вместо Защищенных Атрибутов. (Вам не нужно включать драгоценный камень в свой гемфайл, так как он уже включен.)
Вы берете код Railr 3 attr_accessible из вашей модели и помещаете соответствующий код в свой контроллер. Смотрите здесь для получения дополнительной документации: https://github.com/rails/strong_parameters
В вашем случае что-то вроде:
class RelationshipController < ActionController::Base
def create
@relationship = Relationship.new(relationship_params)
if @relationship.save
# do something
else
# do something
end
end
private
def relationship_params
params.require(:relationship).permit(:followed_id)
end
end
Редактировать:
Вот хорошая статья, с которой я только что натолкнулся: http://blog.sensible.io/2013/08/17/strong-parameters-by-example.html