多个相同的多对多关系

时间:2014-06-29 03:42:35

标签: ruby-on-rails ruby-on-rails-4 many-to-many

注意 - 为了不引起混淆,问题中的方法有效,但要小心使用"s"' s在您的命名约定中。

我试图在班级A和班级B之间建立两对多的关系。

方法

class A < ActiveRecord::Base

  has_many :relationship_a
  has_many :b, through: :relationship_a

  has_many :relationship_b
  has_many :other_b, through: :relationship_b, source: :b

end

class B < ActiveRecord::Base

  has_many :relationship_a
  has_many :a, through: :relationship_a

  has_many :relationship_b
  has_many :other_a, through: :relationship_b, source: :a

end

关系

class RelationshipA < ActiveRecord::Base

    belongs_to :A
    belongs_to :B

end

class RelationshipB < ActiveRecord::Base

    belongs_to :A
    belongs_to :B

end

这就是发生的事情:

2.1.2 :001 > B.new.otherA
ActiveRecord::HasManyThroughSourceAssociationNotFoundError: Could not find the source association(s) :A in model OtherA. Try 'has_many :otherA, :through => :relationshipB, :source => <name>'. Is it one of :A or :B?

如果有人质疑我在同一个班级之间有多对多关系背后的逻辑,那么请做。

我有两个对象,A和B.我有一个A的主要集合,其中没有任何重复。然后,我有一系列不断维护的B&B,但同样没有重复。 B可以在一个关系下拥有许多A,但可以有重叠; B1和B2都可以有A1,A2和A3。然后在第一个关系中有一个子集合,其中B1可以&#34;选择&#34;原始示例列表中的A1和A3以及B2可以选择&#34; A2和A3。这是假设B1和B2只知道A1-3,并且无法选择该范围之外的任何东西。

有了这个场景,我唯一的结论就是在同一个对象上有两个关系,因为能够选择B1中的A1然后选择B2,这也不是预期的功能。

请质疑我的逻辑!

0 个答案:

没有答案