class A < ActiveRecord::Base
has_one :b, class_name: "Something::B"
end
module Something
class B < ActiveRecord::Base
end
end
假设上面的类结构具有实际的表名a
和something_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' })
但结果查询如下,"b"
子句中"something_b"
代替WHERE
。
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' })
答案 0 :(得分:0)
如果您的模型名称和表名称与rails
约定不一致,最简单的形式为table_name = SomeClass.name.pluralize.downcase
,那么您需要在模型中定义实际的表名。
module Something
class B < ActiveRecord::Base
self.table_name = 'something_b'
end
end
上面的更改应该在生成的查询中选择正确的表名。
答案 1 :(得分:0)
您可以尝试以下解决方案之一。
在模块中,您可以定义以下方法
<android.support.v7.widget.AppCompatSeekBar
android:id="@+id/teacher_intro_seekbar"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:progress="10"
android:paddingRight="10dp"
app:progressTint="#c9c9c9"
app:secondaryProgressTint="#bebebe"
app:thumbTint="#a9a9a9" />
或
在课堂上,您可以将表名设置为
def self.table_name_prefix
'something_'
end