【发布时间】:2011-09-20 19:58:24
【问题描述】:
我使用 Rails 3.1 构建了一个照片共享 Web 应用程序。我只是想验证我的关联是否正确。
一些上下文:一个User 有很多Share。一个Share 有一个User(即“sharer”)、一个Photo 和许多Receiver。 Receiver是任意的User。
我使用直通关联的原因仅仅是因为我想为共享照片的每个接收者存储额外的数据。
class Photo < ActiveRecord::Base
has_many :shares
end
class Receiver < ActiveRecord::Base
belongs_to :share
belongs_to :user
end
class Share < ActiveRecord::Base
belongs_to :photo
belongs_to :user
has_many :receivers
has_many :users, :through => :receivers
end
class User < ActiveRecord::Base
has_many :receivers
has_many :shares, :through => :receivers
end
然后可以使用shares 类方法检索User 共享照片吗?
User.first.shares
# => [<#Share:0x000>, ...]
然后可以使用receivers 类方法来检索User 收到的共享吗?
User.first.receivers
# => [<#Receiver:0x000>, ...]
我做对了吗?
【问题讨论】:
-
您在
class Photo ActiveRecord::Base中缺少<,我为您添加了。 -
是的,你的结构和代码对我来说很合适。
标签: ruby-on-rails ruby associations has-many-through