Ruby on rails 在rails助手方法where()查询中使用变量列名
我正在用一个包含布尔值的用户模型工作6天Ruby on rails 在rails助手方法where()查询中使用变量列名,ruby-on-rails,ruby,ruby-on-rails-3,Ruby On Rails,Ruby,Ruby On Rails 3,我正在用一个包含布尔值的用户模型工作6天 [sun20, mon21, tue22, wed23, thur24, fri25] 每个用户都可以选择确认他们参与的6天中的哪一天 我试图定义一个简单的助手方法: def day_confirmed(day) User.where(day: true).count end 我可以在一天内通过,了解当天确认了多少用户,如下所示: day_confirmed('mon21') 我的问题是,当我在where()中使用day时,rail
[sun20, mon21, tue22, wed23, thur24, fri25]
每个用户都可以选择确认他们参与的6天中的哪一天
我试图定义一个简单的助手方法:
def day_confirmed(day)
User.where(day: true).count
end
我可以在一天内通过,了解当天确认了多少用户,如下所示:
day_confirmed('mon21')
我的问题是,当我在where()
中使用day
时,rails假定我正在搜索名为day
的列,而不是输出传递给方法的值
我肯定忘了什么,对吧?这个语法:
User.where( day: true )
相当于:
User.where( :day => true )
这是因为在散列中使用:
而不是=>
,例如{foo:bar}
,与在键中使用符号相同,例如{:foo=>bar}
。或许这将有助于:
foo = "I am a key"
hsh = { foo: "bar" }
# => { :foo => "bar" }
hsh.keys
# => [ :foo ]
hsh = { foo => "bar" }
# => { "I am a key" => "bar" }
hsh.keys
# => [ "I am a key" ]
因此,如果要使用变量day
的值而不是符号:day
作为键,请尝试以下操作:
User.where( day => true )
此语法:
User.where( day: true )
相当于:
User.where( :day => true )
这是因为在散列中使用:
而不是=>
,例如{foo:bar}
,与在键中使用符号相同,例如{:foo=>bar}
。或许这将有助于:
foo = "I am a key"
hsh = { foo: "bar" }
# => { :foo => "bar" }
hsh.keys
# => [ :foo ]
hsh = { foo => "bar" }
# => { "I am a key" => "bar" }
hsh.keys
# => [ "I am a key" ]
因此,如果要使用变量day
的值而不是符号:day
作为键,请尝试以下操作:
User.where( day => true )
如果这些是您的列名,
[sun20、mon21、tue22、wed23、thur24、fri25]
如果您正在调用day\u confirm('mon21')
,并试图在true
的位置找到列“mon21”,您可以使用对日期
变量执行sym
def day_confirmed(day)
User.where(day.to_sym => true).count
end
.to_sym
将获取日期的值,并将其转换为:mon21
如果这些是您的列名,[sun20,mon21,tue22,wed23,thur24,fri25]
如果您正在调用day\u confirm('mon21')
,并试图在true
的位置找到列“mon21”,您可以使用对日期
变量执行sym
def day_confirmed(day)
User.where(day.to_sym => true).count
end
.to_sym
将获取日期的值
,并将其转换为:mon21
,详细说明您的搜索。您正在尝试查找列名称“mon21”设置为true?的用户,详细说明您的搜索。您正在尝试查找列名称“mon21”设置为true的用户吗?