5

これは、Relationship モデルに attr_accessible を追加したときに発生しました。

class Relationship < ActiveRecord::Base
  attr_accessible :followed_id
end

Devise や protected_attributes gem を使用しない場合、これを回避するにはどうすればよいですか? コントローラーでは、フィールドを要求および許可するプライベート メソッドを呼び出すことを知っています。これはモデルでも行うべきことですか?ここでのコンベンションは何ですか?

ありがとう!

4

1 に答える 1

9

Rails 4 では、Protected Attributes の代わりに Strong Parameters を使用します。(宝石は既に含まれているため、gemfile に含める必要はありません。)

Rails 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

編集:

これについて私がちょうど見つけた良い記事は次のとおりです

于 2013-10-02T04:57:47.993 に答える