繁体   English   中英

通过以下方式在has_many上优雅地设置联接表属性:

[英]Elegantly set join table attributes on has_many through: association

在我的Rails 3.2应用程序中, Users可以创建Articles Collections CollectionsArticles是由加入has_many through: collections_articles关系。

当将Article添加到Collection时,我希望将user_id存储在collections_articles连接表中。 (因此,该应用程序可以稍后显示谁将文章添加到集合中)。 有没有一种优雅的方法可以做到这一点?

class CollectionsArticle
  collection_id
  article_id
  user_id

  belongs_to :collection
  belongs_to :article
  belongs_to :user

当用户将文章添加到集合中时,我只想使用铲子,所以:

  my_collection.articles << my_article

无论如何,要(优雅地)同时将user_id表的user_id设置为current_user吗? 或者最好是在联接表本身中显式创建记录的最佳方法:

  CollectionsArticle.create(article: @article, collection: @collection, user: current_user)

谢谢!

模型层本身不具有current_user ,因此您必须以某种方式从控制器层传递它。

我能想到的最优雅的解决方案是在Collection模型中创建一个add_article方法:

def add_article(article, by_user)
  self.collection_articles.create(article: article, user: by_user)
end

..然后从控制器中调用

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM