Rails新手,所以在这里忍受我。我需要有关如何在我的两个模型之间正确设置活动记录关联的建议。
目前看来,我有一个用户模型。用户has_many联系人。一个用户has_many帖子。简单地说:
rate(360,-665.3, 99000);
0.005916521358085446
rate(360,-958.63, 192000);
0.0036458502960158515
rate(180,-1302.96,192000);
0.0022917255526408564
rate(360, -889.19, 192000);
0.0031250616819306744
rate(360, -1145.8, 240000);
0.003333353153720964
用户可以向其中一个或多个联系人发送帖子(虽然该操作只是触发电子邮件的内容,但我需要能够跟踪并显示他们每个帖子发送的联系人)。他们可以向许多联系人发送帖子,他们可能(随着时间的推移)发送每个联系人超过1个帖子。
我有点不确定如何关联帖子和联系人。它只是一个简单的帖子has_many联系人(反之亦然)?或者应该是一个帖子通过用户通过联系?
虽然我通常是一个通过反复试验来学习的人,但这是我担心如果我走到错误的道路上的情况之一,我会很清楚地知道它会要撤消是痛苦的 - 所以感谢任何建议。
我正在使用Rails 5来获取它的价值。
答案 0 :(得分:1)
您正在寻找的是多对多的关系。由于帖子可以与许多联系人相关联,并且联系人可以与许多帖子相关联。
的精彩解读基本上,您将创建一个关联表来帮助链接帖子和联系人表。
class Contact < ApplicationRecord
belongs_to :user
has_many :posts, through: post_contact
class Post < ApplicationRecord
belongs_to :user
has_many :contacts, throught: post_contact
您将创建一个名为post_contact(或任何您想要的)的新连接表,该表提供了帖子和联系人之间的关联。
希望这有帮助。
答案 1 :(得分:1)
您不一定需要Post
和Contacts
之间的联接,即您可以写@post.user.contacts
或@contact.user.posts
,但这取决于您的使用情况。< / p>
但是,您确实想要为Post
创建一个关联,以获取同一用户的所有评论。你可以写:
class Post < ActiveRecord::Base
has_many :contacts_of_user, through: :user, source: :contacts
end
您也可以使用相同的逻辑来实现contact.posts
。