私はブログのように、ユーザー、投稿、コメントの3つのモデルでアプリケーションを作成しようとしています。予想通り、コメントはユーザーと投稿の両方に属します。 Comment.rbユーザ/投稿/コメントのレール関連
belongs_to :user
belongs_to :post
User.rb
has_many :comments
has_many :posts
Post.rb
has_many :comments
belongs_to :user
そして私は、コメントを作成しようとしました:
は、私は、次の関連付けを使用しました使用: @ user.comments.createただし、これはユーザーとのコメントに関連しますが、投稿とは関連しません。私は、コメントをユーザと投稿の両方に関連付けてほしいと思っています。そうする方法はありますか?あるいは私は間違った団体を使いましたか?
私はuser_idまたはpost_idを手動で設定することをお勧めしないかもしれないので、両方のIDはattr_accessibleにありません。それが正しいかどうかわからない。
ありがとうございました!
これは、あなたが望むように聞こえます - 多態性の答えは間違った質問のためでした...そして、作成時にハッシュを介してこれらの属性を設定できるが、更新時にユーザーによる変更からそれらを保護できるようにしたい場合は、 attr_readonly:[link](http://api.rubyonrails.org/classes/ActiveRecord/Base.html#method-c-attr_readonly)。 –
私が試したとき: '@ user.comments.create(:content =>" hi "、:post => @post)'、 '#<コメントID:nil、user_id:1、post_id:nil、content : "hi"、created_at:nil、updated_at:nil> '。 '@ post'は'#<投稿ID:4、タイトル: "fooTitle"、コンテンツ: "fooContent"、user_id:1、created_at: "2011-02-07 20:13:43"、updated_at: "2011- 02-07 20:13:43 "。投稿後の関連付けがまだ行方不明だったようです。何が間違っているのか分かりません。ありがとう! – garthcn
奇数私はバーのUser、Post、Commentクラスのクラスを持つテストアプリを作成しました。コンソールを通して 'user = User.create;ポスト=ポスト。 #<コメントID:1、user_id:1、post_id:1、created_at: "2011-02-08 09:46:53"、updated_at: "2011- 02-08 09:46:53 ">'あなたのコメントはあなたのDBにあるかどうか確認できますか?それはリロードが必要ですか?あなたが行ったことを正確に投稿できますか? – Chowlett