繁体   English   中英

带有连接表的单表继承子模型上的 Rails 多对多关联

[英]Rails many-to-many associations on single-table-inheritance child models with join tables

我有一个通过 STI 具有多个不同类别/类型的Keyword类,如下所述

class Keyword < ApplicationRecord
end

class Keyword1 < Keyword
end

class Keyword2 < Keyword
end

class Keyword3 < Keyword
end

然后我有一个User类。 每个User应该有许多Keyword1sKeyword2sKeyword3s 如何设置这种多对多关系,以便我可以查询诸如user.keyword1s而不是user.keyword.where(type: "keyword1")之类的东西? 是否有可能拥有一个UserKeyword连接表,同时仍然能够轻松地选择某些类型(比如在父Keyword类上定义范围,以便我可以查询user.keywords.keyword1s或其他内容)?

在这里使用的最佳设计是什么? 提前致谢。

您可以直接在User类中定义的has_many关系中执行此操作

has_many :keyword1, class_name: 'Keyword1'
has_many :keyword2, class_name: 'Keyword2'

您还可以将范围用于更多花哨的东西

has_many :keyword1 -> { where(type: 'keyword1') }, class_name: 'Keyword'
has_many :keyword2 -> { where(type: 'keyword2') }, class_name: 'Keyword'

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM