如何创建这种 `through`` 关联?
How to create this `through`` association?
Organization
和 Link
通过 Node
关联。
Organization
:
has_many :nodes
has_many :links, through: :nodes, source: :where_first_links
Node
:
belongs_to :organization
has_many :where_first_links, class_name: "Link",
foreign_key: "first_node_id"
has_many :where_second_links, class_name: "Link",
foreign_key: "second_node_id"
Link
:
belongs_to :first_node, class_name: "Node"
belongs_to :second_node, class_name: "Node"
问题::如何将Link
关联回Organization
?我尝试了下面的行,但这似乎不起作用 (ArgumentError: Unknown key: :through.
):
belongs_to :organization,
through: :first_node,
source: :where_first_links,
inverse_of: :links
使用 has_one
代替 belongs_to
。
class Link < ActiveRecord::Base
belongs_to :first_node, class_name: "Node"
belongs_to :second_node, class_name: "Node"
has_one :organization, through: :first_node
end
belongs_to 不支持通过键关联
你应该使用 has_one 关联
has_one :first_node_organization,
through: :first_node,
class_name: 'Organization',
source: :organization
Organization
和 Link
通过 Node
关联。
Organization
:
has_many :nodes
has_many :links, through: :nodes, source: :where_first_links
Node
:
belongs_to :organization
has_many :where_first_links, class_name: "Link",
foreign_key: "first_node_id"
has_many :where_second_links, class_name: "Link",
foreign_key: "second_node_id"
Link
:
belongs_to :first_node, class_name: "Node"
belongs_to :second_node, class_name: "Node"
问题::如何将Link
关联回Organization
?我尝试了下面的行,但这似乎不起作用 (ArgumentError: Unknown key: :through.
):
belongs_to :organization,
through: :first_node,
source: :where_first_links,
inverse_of: :links
使用 has_one
代替 belongs_to
。
class Link < ActiveRecord::Base
belongs_to :first_node, class_name: "Node"
belongs_to :second_node, class_name: "Node"
has_one :organization, through: :first_node
end
belongs_to 不支持通过键关联
你应该使用 has_one 关联
has_one :first_node_organization,
through: :first_node,
class_name: 'Organization',
source: :organization