如何在ActiveRecord中搜索整数字段?

时间:2013-05-14 17:47:32

标签: ruby-on-rails ruby ruby-on-rails-3 activerecord ruby-on-rails-3.2

我希望用户能够使用此功能搜索我的数据库:

def self.search(query)
  new_query = (query.to_d * 100).to_i
  where("price_in_cents LIKE ?", new_query)
end

问题是我的所有prices都作为integers存储在数据库中,所以如果有人搜索“10.99”,他应该实际搜索“1099”。

上面的功能不起作用,我想知道我做错了什么。

感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

为什么使用“like”进行数字比较?您应该使用“=”或“> =”等。

def self.search(query)
  new_query = (query.to_d * 100).to_i
  where("price_in_cents = ?", new_query)
end

答案 1 :(得分:0)

好的,我最终使用了这个:

def self.search(query)
  string = query.to_s.gsub('.','')
  where("amount_in_cents LIKE ?", "%#{string}%")
end

感谢@grotori让我走上正轨!