在同一模型上使用多个 has_one 关系
Use many has_one relation on the same model
我有一个这样的模型匹配:
class Match < ActiveRecord::Base
belongs_to :match, foreign_key: 'parent'
belongs_to :match, foreign_key: 'child_left'
belongs_to :match, foreign_key: 'child_right'
end
许多匹配代表一棵树。
我想将外键设置为使用 Match.first.child_left return 对象匹配而不仅仅是代表 id 的整数。
更好,我可以在这种情况下使用 has_one 关系吗?因为它使用每个模型匹配但具有不同的 foreign_key.
更好的是,我可以确定当我在匹配中放置 child_left 时它会在子匹配上设置父属性与数据库还是我应该用 ruby 来设置?
尝试:
class Match < ActiveRecord::Base
belongs_to :parent, class_name: 'Match'
belongs_to :child_left, class_name: 'Match'
belongs_to :child_right, class_name: 'Match'
end
您的 matches
table 应该有整数字段 parent_id
、child_left_id
、child_right_id
。您应该可以像这样使用它:
Match.first.child_left
我有一个这样的模型匹配:
class Match < ActiveRecord::Base
belongs_to :match, foreign_key: 'parent'
belongs_to :match, foreign_key: 'child_left'
belongs_to :match, foreign_key: 'child_right'
end
许多匹配代表一棵树。
我想将外键设置为使用 Match.first.child_left return 对象匹配而不仅仅是代表 id 的整数。
更好,我可以在这种情况下使用 has_one 关系吗?因为它使用每个模型匹配但具有不同的 foreign_key.
更好的是,我可以确定当我在匹配中放置 child_left 时它会在子匹配上设置父属性与数据库还是我应该用 ruby 来设置?
尝试:
class Match < ActiveRecord::Base
belongs_to :parent, class_name: 'Match'
belongs_to :child_left, class_name: 'Match'
belongs_to :child_right, class_name: 'Match'
end
您的 matches
table 应该有整数字段 parent_id
、child_left_id
、child_right_id
。您应该可以像这样使用它:
Match.first.child_left