gpt4 book ai didi

sql - rails : join query on association with class_name

转载 作者:行者123 更新时间:2023-12-05 07:50:40 27 4
gpt4 key购买 nike

class A < ActiveRecord::Base
has_one :b, class_name: "Something::B"
end

module Something
class B < ActiveRecord::Base
end
end

假设上面的类结构具有实际表名 asomething_b,我想创建以下 SQL 查询。

SELECT  "a".* FROM "a" 
INNER JOIN "something_b" ON
"something_b"."a_id" = "a"."id"
WHERE "something_b"."some_column" = "some_value" LIMIT 1

我尝试了一些类似的东西

A.joins(:b).find_by(b: { some_column: 'some_value' })

但是结果查询如下,在 WHERE 子句中有 "b" 而不是 "something_b"

SELECT  "a".* FROM "a" 
INNER JOIN "something_b" ON
"something_b"."a_id" = "a"."id"
WHERE "b"."some_column" = "some_value" LIMIT 1

有没有办法不明确指定表名,如下所示?

A.joins(:b).find_by(something_b: { some_column: 'some_value' })

最佳答案

如果您的模型名称和表名称不匹配 rails 约定,即最简单的形式 table_name = SomeClass.name.pluralize.downcase,那么您需要在模型中定义实际的表名。

module Something
class B < ActiveRecord::Base
self.table_name = 'something_b'
end
end

以上更改应该在生成的查询中选择正确的表名。

关于sql - rails : join query on association with class_name,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35934255/

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