我有一个模型ApiKey
class ApiKey < ActiveRecord::Base
has_many :third_party_api_keys #points to other Apikeys
belongs_to :origin_key #points to another ApiKey
end
我希望它与其他api密钥有关联。我找不到如何设置它,所以我可能正在接近这个错误。我需要连接模型吗?并做一个:through
答案 0 :(得分:1)
你可以为递归关联做这样的事情:
belongs_to :origin_key, class_name: 'ApiKey'
has_many :third_party_api_keys, class_name: 'ApiKey', foreign_key: :origin_key_id
如果您需要优化您的选择,您也可以使用像closure_tree这样的宝石 使用单个选择获取元素的所有层次结构。
答案 1 :(得分:0)
有一个很好的railscasts处理您的确切问题,我建议从那里开始。
另外,请查看回答您自己的other stackoverflow问题。
还有docs描述了如何进行自我加入。
要解决您的问题,您需要执行类似
的操作class ApiKey < ActiveRecord::Base
has_many :third_party_api_keys, class_name: 'Keys', foreign_key: :origin_key_id
belongs_to :origin_key, class_name: 'Keys'
end
因为这是一个自引用连接,所以您不需要另一个连接表,只需要ApiKey表中的origin_key_id。