公开has_many的关联 - > has_many通过父母?

时间:2011-11-03 18:04:52

标签: ruby-on-rails activerecord associations has-many

如果一个用户有很多东西而且一个东西有很多统计数据,那么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)

我正在试图确定是否还有其他选择......我团队中的一些人抱怨说这感觉并不自然。我觉得这是你可以设计的关系中最自然的表达方式。

有人有更好的建议吗?我会说,我尝试了实例方法,但它们闻起来并不正确。

1 个答案:

答案 0 :(得分:0)

我可能会使用has_many:stats,:through =&gt; :User类中的内容。

看看这个:http://guides.rubyonrails.org/association_basics.html#the-has_many-through-association