gpt4 book ai didi

mysql - 具有 class_name 的搜索关联

转载 作者:行者123 更新时间:2023-11-30 22:08:40 28 4
gpt4 key购买 nike

我有一个看起来像这样的 Book 模型:

class Book < ActiveRecord::Base
belongs_to :author, class_name: 'User', touch: true
belongs_to :translator, class_name: 'User'
end

如何搜索具有特定作者姓名的书籍?我先加入表格:

Book.joins(:author).joins(:translator)

但是我不能链接

.where('authors.name = "Tolkien"')

因为数据库中没有“作者”表。是

.where('users.name = "Tolkien"')

这里有安全的方法吗?译者和作者实际上都是用户,就没有风险吗?(select() 方法不是一个选项,我在这里需要 activerecord::relation)

最佳答案

需要在查询中传递表名

Book.joins(:author).where(users: {name: 'Tolkien'})

is .where('users.name = "Tolkien"') a safe approach here?

如果您担心两个关联使用同一个表,您可能需要添加一个字段来区分它们

例如。一个 bool 字段 author 和使用关联的条件,这将解决问题

class Book < ActiveRecord::Base
belongs_to :author, -> { where(author: true) }, class_name: 'User', touch: true
belongs_to :translator, -> { where(author: false) }, class_name: 'User'
end

关于mysql - 具有 class_name 的搜索关联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40844052/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com