: has_many отношения с: через на другие отношения с: через - PullRequest
2 голосов
/ 17 ноября 2010

Моя настройка следующая:

class User < ActiveRecord::Base
  has_many :owners, :dependent => :destroy
  has_many :properties, :through => :owners
end

class Owner < ActiveRecord::Base
  belongs_to :user
  belongs_to :property
end

class Property < ActiveRecord::Base
  has_many :owners, :dependent => :destroy
  has_many :users, :through => :owners
  has_many :datafiles, :dependent => :destroy
end

class Datafile < ActiveRecord::Base
  belongs_to :property
end

Теперь я бы хотел иметь возможность делать @ user.datafiles.Я попробовал has_many :datafiles, :through => :properties, :source => :datafiles, но, похоже, проблема с a: through в том, что уже было передано a: through.Так как же мне попробовать и управлять тем, что я пытаюсь сделать здесь?

Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 17 ноября 2010

2 подхода;

1>

class User < AR
  has_many :owners, :dependent => :destroy
  has_many :properties, :through => :owners
  has_many datafiles
end

class Datafile < AR
  belongs_to :user
  belongs_to :property
end

Ваше требование user.datafiles должно быть выполнено с этим.

Если вы хотите использовать вложенный has_many, вам нужно использовать плагин, который является вторым подходом.

2> Вы можете найти это здесь. Плагин работает из коробки и выполняет свою работу.

0 голосов
/ 17 ноября 2010

Как насчет чего-то вроде:

#user.rb

def datafiles
  Property.find(:all, :joins => :owners, :conditions => ['owners.user_id = self.id'], :include => :datafile).collect(&:datafile)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...