我有以下情况,用户可以创建时事通讯,也可以订阅时事通讯。是否有更好的方法来区分这两种能力与关联,或者我可以将所有权放在订阅模型中,如:many associations in Rails所建议的那样。使用此解决方案,我如何编码时事通讯模型,以获得时事通讯所有者和时事通讯订阅者。
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]发布于 2014-02-26 18:59:58
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"现在您可以通过以下方式获得订阅者和创建者
newsletter.subscribers
newsletter.creatorhttps://stackoverflow.com/questions/22050366
复制相似问题