在同一模型上使用多个 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_idchild_left_idchild_right_id。您应该可以像这样使用它:

Match.first.child_left