jos*_*ara 0 ruby ruby-on-rails ruby-on-rails-3
我正在使用包含布尔值的用户模型 6 天
[sun20, mon21, tue22, wed23, thur24, fri25]
Run Code Online (Sandbox Code Playgroud)
每个用户都可以选择确认他们参与的是 6 天中的哪一天。
我正在尝试定义一个简单的辅助方法:
def day_confirmed(day)
User.where(day: true).count
end
Run Code Online (Sandbox Code Playgroud)
我可以在一天内通过其中了解当天有多少用户被确认,如下所示:
day_confirmed('mon21')
Run Code Online (Sandbox Code Playgroud)
我的问题是,当我day在 中使用时where(),rails 假设我正在搜索名为 的列,day而不是输出我传递给方法的值。
我肯定忘记了什么,对吧?
这个语法:
User.where( day: true )
Run Code Online (Sandbox Code Playgroud)
相当于:
User.where( :day => true )
Run Code Online (Sandbox Code Playgroud)
这是因为:在散列中使用 ,而不是=>,eg { 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" ]
Run Code Online (Sandbox Code Playgroud)
因此,如果您想使用变量的值day而不是符号:day作为键,请尝试以下操作:
User.where( day => true )
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3150 次 |
| 最近记录: |