0
ユーザーは投稿を作成できます。投稿にはコメントがあります。コメントは、ユーザーと投稿の両方に属している必要がありますが、必ずしも投稿を作成したユーザーである必要はありません。3つのモデル間でhas_many関係にidを設定する
class User < ActiveRecord::Base
has_many :posts
has_many :comments
end
class Post < ActiveRecord::Base
belongs_to :user
has_many :comments
end
class Comment < ActiveRecord::Base
belongs_to :user
belongs_to :post
end
もしそうなら、確実にするためのベストプラクティスは何か:
user.comments.new
を呼び出すことはできませんこれをモデル化するための最良の方法を以下の通りです。私はすべての新しい投稿は、それらが関連付けられているpost
を使用して作成されたい。- コメントを作成しているユーザーの
id
がそうでなければpost.comments.new
を呼び出すときに適切に設定され、この関係をモデル化するためのより良い方法は何ですか?
モデルの構造を確認していただきありがとうございます。私はコントローラのようなことを計画していましたが、それが "レールの道"などと考えられていることを確認したかったのです。私はuser.comments.newを呼び出すことが不可能にする必要はありませんが、それを利用可能にしておく(すなわち、無益にするためにサルのパッチを当てるのではなく)。再度、感謝します。 –
うん、それを残しても大丈夫です。また、新しいアクションや作成アクションで 'user.comments.new'を使用していますか?一般に、アソシエーションからオブジェクトを構築するときは、 'new'の代わりに' build'を使うべきです。最近のバージョンでは両方とも動作しますが、 'build'はオブジェクトを投稿のコメントコレクションに追加し、それをメモリに保持します。すべての詳細についてはわからないが、Googleの違いを検索して自分で決めることができる); – Robin
右 - 私は
new
とbuild
の違いを知っている。 –