我有一个模型为Project
的Ruby on Rails应用,该模型的属性为wcag_version
,类型为float。
我有一个与wcag_version = 2
的记录,一个与wcag_version = 2.1
的记录:
我注意到,Rails使用wcag_version = 2
使用Project.where(wcag_version: 2.0)
查找记录:
[4] pry(#<WcagElementsController>)> Project.where(wcag_version: 2.0)
=> [
[0] #<Project:0x007f9fa900c6e8> { :id => 1 ... }
但是找不到使用wcag_version = 2.1
的{{1}}的记录:
Project.where(wcag_version: 2.1)
这似乎是一个SQL问题,而不是Rails问题。生成的SQL是:
[5] pry(#<WcagElementsController>)> Project.where(wcag_version: 2.1)
=> []
如果我直接在数据库上手动执行,也不返回任何内容:
这是怎么回事?顺便说一下,我正在使用MySQL。
答案 0 :(得分:0)
处理Rails,看来我可以解决以下问题:
Project.all.each do |project|
if project.wcag_version >= reference_criterion.wcag_version
# Do stuff
end
end
虽然效果不佳,但为我省去了很多麻烦。
为完整起见,这是原始代码:
Project.where("wcag_version >= #{reference_criterion.wcag_version}").each do |project|
# Do stuff
end