Mysql Rails没有找到使用的价值=
在Rails3.0.9(Ruby1.9.2,MySQL)中,我有一个方法,应该使用两个字段来查找用户:type(string)和flag(boolean)。查询的字符串部分可以正常工作,但布尔部分不行 代码如下:Mysql Rails没有找到使用的价值=,mysql,ruby-on-rails,Mysql,Ruby On Rails,在Rails3.0.9(Ruby1.9.2,MySQL)中,我有一个方法,应该使用两个字段来查找用户:type(string)和flag(boolean)。查询的字符串部分可以正常工作,但布尔部分不行 代码如下: def find_users(type) @private_users = User.where('type =? and flag != ?', org_type, true) end 要想弄清楚发生了什么,请输入以下代码: @users.each do |f| puts
def find_users(type)
@private_users = User.where('type =? and flag != ?', org_type, true)
end
要想弄清楚发生了什么,请输入以下代码:
@users.each do |f|
puts "oh helllllllllllllllllllllllllllo #{f.user_name}"
puts "oh helllllllllllllllllllllllllllo #{f.flag}"
puts "oh helllllllllllllllllllllllllllo #{f.type}"
end
大多数的标志字段都是空的/空的,这些是我正在尝试选择的
如果我将表达式更改为('type=?and flag=?',type,true)
,它会正确地找到其中1是标志值的表达式
我试过这些东西,但都没有用:
User.where('type =? and flag = ?', org_type, false)
User.where('type =? and flag = ?', org_type, "")
User.where('type =? and flag = ?', org_type, nil)
这对某些人来说可能是一个简单的问题,所以我希望有些人知道答案。谢谢大家! 如果可空列为
NULL
,则不能使用常规比较运算符。您需要使用IS NULL
/IS NOT NULL
运算符
您也可以尝试使用运算符(对我来说也是新的)如果可空列为
NULL
,则不能使用普通的比较运算符。您需要使用IS NULL
/IS NOT NULL
运算符
你也可以试试这个操作符(对我来说也是新的)试试
User.where(:type => org_type, flag: nil)
应生成SQL查询
SELECT "users".* FROM "users" WHERE "users"."type" = 'some_type' AND "users"."flag" IS NULL
关键是ActiveRecord将为您的标志
列使用IS NULL
运算符。试试看
User.where(:type => org_type, flag: nil)
应生成SQL查询
SELECT "users".* FROM "users" WHERE "users"."type" = 'some_type' AND "users"."flag" IS NULL
关键是ActiveRecord将为您的标志
列使用IS NULL
运算符