如果一个用户有很多东西而且一个东西有很多统计数据,那么Rails-y方式似乎只能通过用户公开统计数据。
class User < ActiveRecord::Base
has_many :things do
def stats
Stat.where(thing_id: proxy_association.owner.things_id)
end
end
end
class Thing < ActiveRecord::Base
belongs_to :user
has_many :stats
end
class Stat < ActiveRecord::Base
belongs_to :thing
has_one :user, through: :thing
end
User.first.things.stats == Stat.where(thing_id: User.first.thing_ids)
我正在试图确定是否还有其他选择......我团队中的一些人抱怨说这感觉并不自然。我觉得这是你可以设计的关系中最自然的表达方式。
有人有更好的建议吗?我会说,我尝试了实例方法,但它们闻起来并不正确。
答案 0 :(得分:0)
我可能会使用has_many:stats,:through =&gt; :User类中的内容。
看看这个:http://guides.rubyonrails.org/association_basics.html#the-has_many-through-association