我有一个包含 bool 属性的模型,Member
可以是 admin
。当我创建一个新的 Team
时,我想为创建该 Team
的 Member
将此值设置为 true。当我使用 SQLite
时,它运行良好。导致错误的行如下所示:
def set_admin
if self.members.admins.any? == false
self.members.first.update_attributes admin: true
end
end
我的查询 (members.admins)
看起来像这样:
has_many :admins, -> { where("admin = 1") }, through: :members, source: :user
注意 我也试过:
has_many :admins, -> { where(admin = true) }, through: :members, source: :user
但是我得到了同样的错误:
完整的错误信息如下所示:
PG::UndefinedFunction: ERROR: operator does not exist: boolean = integer LINE 1: ...s"WHERE "members"."team_id"= $1 AND "members"."admin"= 1 ^提示:没有运算符匹配给定的名称和参数类型。您可能需要添加显式类型转换。:SELECT COUNT(*) FROM "members"WHERE "members"."team_id"= $1 AND "members"."管理员"= 1
而且我不确定如何解决它。有什么想法吗?
最佳答案
恕我直言,它只是:
# in team.rb
has_many :admins, -> { where(admin: true) }, through: :members, source: :user
# or if you use postgresql's boolean datatype
has_many :admins, -> { where('admin = \'t\'') }, through: :members, source: :user
def set_admin
members.first.update_attributes(admin: true) if admins.none?
end
关于sql - Rails - PostgreSQL bool where 语句,错误 : operator does not exist: boolean = integer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24838224/