问题在rails中找到连接表

时间:2009-11-15 13:00:36

标签: ruby-on-rails activerecord

我有模型代表关联规则(Body => Head)

def Item
has_many :heads
has_many :bodies
...
end

def Rule
has_many :heads
has_many :bodies
...
end

def Body
belongs_to :item
belongs_to :rule
...
end

def Head
belongs_to :item
belongs_to :rule
...
end

我想找到一个规则,其中指定了正文项目匹配的项目并希望通过规则访问其头部,但我不能这样做

def Rule
has_many :heads
has_many :bodies
has_many :item, :through => :heads
has_many :item, :through => :bodies
...
end

我应该做些什么来改变这一点?

谢谢,

2 个答案:

答案 0 :(得分:0)

def Rule
  has_many :heads
  has_many :bodies
  has_many :head_items, :through => :heads
  has_many :body_items, :through => :bodies
  ...
end

每个人都需要不同的has_many关联。

答案 1 :(得分:0)

最后,我想出了这个解决方案

class Rule
  has_many :heads
  has_many :bodies
  ...
end
class Body
  belongs_to :rule
  has_many :items, :as => :rulable
end
class Head
  belongs_to :rule
  has_many :items, :as => :rulable
end
class Item
  belongs_to :rulable, :polymorphic => true`
end

不确定这是否是一个很好的解决方案,但这是我现在使用的。