Разоблачение ассоциаций has_many -> has_many через родителя? - PullRequest
0 голосов
/ 03 ноября 2011

Если у пользователя много вещей, а у предмета много статистики, кажется, что у 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 голосов
/ 03 ноября 2011

Я мог бы использовать has_many: stats,: through =>: вещи в классе User.

Проверьте это: http://guides.rubyonrails.org/association_basics.html#the-has_many-through-association

...