Rails 3.0.9を使用しています
has_many :through
ユーザーが新しい親レコードの作成中に新しい子レコードを作成でき、親レコードの更新中にユーザーが子レコードを作成/削除できる関連付けのあるモデルがあります
例えば:
class Post < ActiveRecord::Base
has_many :comments_posts
has_many :comments, :through => :comments_posts
attr_accessible :title, :post_text, :comments_attributes
accepts_nested_attributes_for :comments
validates :user_id, :title, :post_text, :presence => true
end
class Comment < ActiveRecord::Base
attr_accessible :comment_text
has_many :comments_posts
has_many :posts, :through => :comments_posts
validates :comment_text, :user_id, :presence => true
end
class CommentsPost < ActiveRecord::Base
belongs_to :comment
belongs_to :post
end
fields_for
posts_controller.rb では、Post で nested_attributes を形成するために使用してコメント レコードを保存/更新しform_for
、パラメーターを期待どおりに形成しています。
def edit
@post = Post.find(params[:id])
end
def update
@post = Post.find(params[:id])
@post.update_attributes(params[:post])
end
問題は次のとおりです。
user_id
ここで、新しいネストされたすべてのコメント属性の列をマージすることはできません。params[:post][:comments_attributes]
これは、によって無視されattr_accessible
ます。
user_id
各コメントレコードに列をマージ/割り当てる最良の方法はありますか?