我正在尝试在Rails 4中建模链接和节点。链接可以有两个节点(源节点和目标节点)。节点可以属于多个链接。我在我的链接模型中写了这个。
class Links < ActiveRecord::Base
has_one :source_node, class_name: 'Node'
has_one :target_node, class_name: 'Node'
end
我为我的节点类写了这个。这是对的吗?
class Nodes < ActiveRecord::Base
belongs_to :link
end
答案 0 :(得分:1)
链接的用例:
SN - L - TN
SN - L
L - TN
L
一个链接有一个源节点。
一个链接有一个目标节点。
节点的用例:
L3
|
L1 - SN - L2
|
L4
一个节点有很多链接。
所以:
class Links < ActiveRecord::Base
belongs_to :source_node, class_name: 'Node' // didn't use has_one*
belongs_to :target_node, class_name: 'Node'
end
class Nodes < ActiveRecord::Base
has_many :links
end
使用 belongs_to 而不是 has_one 的原因是因为Link将拥有Node的外键。
如果以相反的方式定义关系怎么办?其中Node具有外键(belongs_to)和每种类型节点的Link(has_one)。使用该设计,您需要为Node模型中的N个链接定义字段link_N_id
。
问题是: