我有一个关联,我想通过关联字段的值来查询。例如:“获取所有Role.name为'admin'的关联”。我还想将Role.name的值转换为小写。
该项的关系是has_many:roles
,而另一侧是belongs_to
。这是我的代码:
- 可行,但不转换为小写:
.where("roles.name":"Admin")
- 错误,即使不转换为小写也会出错:
.where("roles.name = ?","Admin")
生成的SQL是WHERE (roles.name = 'admin')
- 失败,没有错误或转换为小写:
.where('"roles.name" = ?',"Admin")
生成的SQL是WHERE ("roles.name" = 'admin')
我真正想要的是能够说.where('lower("roles.name") = ?',"Admin")
,但我该怎么做呢?
错误通常是SQLException: no such column: roles.name
。
如请求所示,schema.rb
:
create_table "roles", force: :cascade do |t|
t.string "name"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
add_index "roles", ["name"], name: "index_roles_on_name", unique: true