我的设置如下:
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
,但似乎有一个问题:通过已经进入的东西:通过。那么我将如何尝试管理我在这里要做的事情呢?
提前谢谢。
答案 0 :(得分:1)
2种方法;
1&GT;
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 - ; 你可以找到它here. 该插件开箱即用并完成工作。
答案 1 :(得分:0)
如下:
#user.rb
def datafiles
Property.find(:all, :joins => :owners, :conditions => ['owners.user_id = self.id'], :include => :datafile).collect(&:datafile)