我有模型代表关联规则(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
我应该做些什么来改变这一点?
谢谢,
答案 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
不确定这是否是一个很好的解决方案,但这是我现在使用的。