Пожалуйста, используйте новую рекомендованную модель защиты для 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

Другие вопросы по тегам