我的书模型看起来像这样:
activitiInitEngineBean.getRuntimeService()
.createExecutionQuery()
.list()
如何搜索具有特定作者姓名的图书?我先加入表格:
class Book < ActiveRecord::Base
belongs_to :author, class_name: 'User', touch: true
belongs_to :translator, class_name: 'User'
end
但我不能链
Book.joins(:author).joins(:translator)
因为没有&#34;作者&#34;数据库中的表。是
.where('authors.name = "Tolkien"')
这是一个安全的方法吗?事实上,译者和作者都没有风险吗?
(select()方法不是一个选项,我需要activerecord :: relation here)
答案 0 :(得分:0)
您需要在查询中传递表名
Book.joins(:author).where(users: {name: 'Tolkien'})
.where('users.name = "Tolkien"')
这是一个安全的方法吗?
如果您担心使用同一个表的两个关联,您可能需要添加一个字段来区分它们
对于前。一个布尔字段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