我有3个型号:
user: id
has_many :article_users
has_many :articles, through: :article_users
article: user_id
has_many :article_users
has_many :users, through: :article_users
article_user: user_id, article_id
belongs_to: users
belongs_to: articles
创建新文章时,如何在id
模型中将所有用户user_id
添加到article_user
?
def create
@article = Article.new(article_params)
...
end
答案 0 :(得分:0)
您可以将新文章的用户设置为当前用户(假设您有current_user方法)
@article = Article.new(article_params)
@article.user = current_user
我不明白你的意思"如何添加所有用户ID" - 你可以通过这个来扩展你的实际意思吗?
编辑:要将文章与所有现有用户相关联,您可以执行类似
的操作 @article = Article.new(article_params)
@article.save
@article.users << User.all
然而,这感觉有点奇怪:它会创建很多连接表记录,而实际上它可以用一个&#34; bit&#34;来概括。信息,例如&#34;所有用户都可以访问这些信息吗?&#34;。如果您以后创建新用户该怎么办 - 该用户将无法访问此文章。你想要他们吗?
如果您希望所有用户都可以使用文章&#34;而不是&#34;可用于以下特定用户列表(可能恰好是所有用户&#34;),然后您可以在文章的表中添加一个布尔字段,名为&#34; available_to_all_users&#34 ;或者其他的东西。然后,当您想要找出给定用户可以使用哪些文章时,您可以使用以下方法:
#in User
def available_articles
(Article.where(available_to_all_users: true).all + self.articles).uniq
end
答案 1 :(得分:0)
没有这种方法可以将user_id
添加到article_users表中以获取现有记录。您必须使用迁移手动填充user_id
,但如果您在文章表中有user_id
值,则有可能添加user_id
。