0

私は Rails3 を使用しています。User と Post の 2 つのモデルがあります。ユーザーはネストされた属性として投稿を持っています。ユーザーを保存しようとすると、保護された属性を一括割り当てできません:.....

4

3 に答える 3

1

attr_accessible投稿モデルでこれを試してください

http://railscasts.com/episodes/26-hackers-love-mass-assignment

于 2013-06-06T05:50:10.143 に答える
0

Mass Assignment は、Rails がパラメーター ハッシュを使用してオブジェクトを構築する行為に付けた名前です。単一の代入演算子を介して複数の値を属性に割り当てるという点で、これは「一括代入」です。

次のスニペットは、Post モデルの name および topic 属性の一括割り当てを実行します。

Post.new(:name => "John", :topic => "Something")
Post.create(:name => "John", :topic => "Something")
Post.update_attributes(:name => "John", :topic => "Something")

これが機能するためには、モデルで、渡すハッシュの各属性に一括割り当てを許可する必要があります。

これが失敗する 2 つの状況があります。

:name を含まない attr_accessible 宣言があります

:name を含む attr_protected があります

最近、一括割り当てを成功させるために、属性を attr_accessible を介して手動でホワイトリストに登録する必要があることがデフォルトになりました。これ以前は、属性が明示的に attr_protected のブラックリストに登録されているか、他の属性が attr_acessible でホワイトリストに登録されていない限り、デフォルトでは属性が割り当て可能でした。

于 2014-02-24T09:25:35.107 に答える
0

モデル定義が次のような場合:

user.rb

class User < ActiveRecord::Base
  attr_accessible  :name, :posts_attributes
  has_many :posts
  accepts_nested_attributes_for :posts
end

post.rb

class Post < ActiveRecord::Base
  attr_accessible :title, :content :user_id
end

その後、すべてがうまくいくはずです。ネストされた属性として投稿を持つユーザーを保存できます。

ここに初心者向けのサンプルコードがあります:)

https://github.com/railscash/sample_change_user_role

于 2013-06-06T05:49:57.453 に答える