1. ホーム
  2. ruby-on-rails

[解決済み】Rails 4でattr_accessibleはどのように使用されますか?

2022-04-20 13:40:33

質問

attr_accessible は、私のモデル内で動作しなくなったようです。

Rails 4で一括代入を可能にする方法は何ですか?

どのように解決するのですか?

Rails 4 では、現在 強力なパラメータ .

属性の保護は、コントローラで行うようにしました。これはその一例です。

class PeopleController < ApplicationController
  def create
    Person.create(person_params)
  end

  private

  def person_params
    params.require(:person).permit(:name, :age)
  end
end

を設定する必要はありません。 attr_accessible を追加しました。

への対応 accepts_nested_attributes_for

を使用するために accepts_nested_attribute_for を強いパラメータで使用する場合、どのネストした属性をホワイトリストに入れるかを指定する必要があります。

class Person
  has_many :pets
  accepts_nested_attributes_for :pets
end

class PeopleController < ApplicationController
  def create
    Person.create(person_params)
  end

  # ...

  private

  def person_params
    params.require(:person).permit(:name, :age, pets_attributes: [:name, :category])
  end
end

キーワードは自明ですが、念のため、ストロングパラメータに関する詳細な情報をご覧ください。 Railsアクションコントローラーガイドにある .

備考 : もし、まだ attr_accessible を追加する必要があります。 protected_attributes をあなたの Gemfile . そうでない場合は RuntimeError .