首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Rails关联-多模型能力

Rails关联-多模型能力
EN

Stack Overflow用户
提问于 2014-02-26 18:43:34
回答 1查看 115关注 0票数 0

我有以下情况,用户可以创建时事通讯,也可以订阅时事通讯。是否有更好的方法来区分这两种能力与关联,或者我可以将所有权放在订阅模型中,如:many associations in Rails所建议的那样。使用此解决方案,我如何编码时事通讯模型,以获得时事通讯所有者和时事通讯订阅者。

代码语言:javascript
运行
复制
 Newsletter Model
  # fields: id, user_id
  has_many :subscriptions
  has_many :users, through: :subscriptions 
  belongs_to :user *i.e. created by a single user*

 Subscription Model
  # fields: user_id, newsletter_id
  belongs_to :newsletter
  belongs_to :user

 User Model
  # fields: id
  has_many :subscriptions
  has_many :newsletters, through: :subscriptions
  has_many :newsletters *i.e. created many newsletters*
  has_many :created_newsletters, :through => :subscriptions, *old answer*
           :source => :newsletter, 
           :conditions => ["newsletter.creator = ?", true]
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-02-26 18:59:58

代码语言:javascript
运行
复制
Newsletter Model
  has_many :subscriptions
  has_many :subscribers, through: :subscriptions, source: :user 
  belongs_to :creator, class_name: "User", foreign_key: "user_id"

 Subscription Model
  # fields: user_id, newsletter_id
  belongs_to :newsletter
  belongs_to :user

 User Model
  # fields: id
  has_many :subscriptions
  has_many :subscribed_newsletters, through: :subscriptions, source: :newsletter
  has_many :created_newsletters, class_name: "Newsletter", foreign_key: "user_id"

现在您可以通过以下方式获得订阅者和创建者

代码语言:javascript
运行
复制
newsletter.subscribers
newsletter.creator
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22050366

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档