0

Rails のモデル間の関係については数多くの例がありますが、それらはすべてモデルの attr_accessible 部分を省略しているようです。

attr_accessible に関するいくつかのベスト プラクティスを探していますが、矛盾するアドバイスを見つけています。できる/すべき:

-- 外部キーを attr_accessible に入れますか?

Class Post
  attr_accessible :name, :user_id

  belongs_to :user
end
Class User
  attr_accessible :first, :last

  has_many :posts
end

-- 完全なモデルを attr_accessible に入れますか?

Class Post
  attr_accessible :name, :user

  belongs_to :user
end
Class User
  attr_accessible :first, :last

  has_many :posts
end
4

2 に答える 2

2

Kaeros の言うこととは反対に、外部キー フィールドを一括割り当て可能にしないようにアドバイスします。その理由は、投稿を追加するときに誰かが別の user_id を送信する簡単な方法を開いているからです。これがおそらく、あなたが見つけた例に外部キーが含まれていない理由です。

これを回避する最善の方法は、ユーザーの新しい投稿を追加するときにコレクション ビルダー メソッドを使用することです。

user.posts.create(params[:post])

そのアドバイスに従わないことを選択した場合、実際には値をどのように一括割り当てするかによって異なります。ハッシュに が含まれて:user_idいる場合は、アクセス可能にする必要があります。含まれている場合は、それを使用してください:user。よくわからない場合は、いつでも両方をアクセス可能にすることができます。

于 2013-02-08T20:09:54.890 に答える
0

attr_accessible で外部キーを使用するのは正常なようで、デフォルトのオプションです。ここで、API ガイドもこのフォームを使用していることがわかります。

モデル名を attr_accessible に追加することも私にとってはうまくいきました。

私は最初のオプションを好むので、外部キーを扱っていることが簡単にわかります

于 2013-02-08T19:39:39.053 に答える