【发布时间】:2021-06-14 02:27:35
【问题描述】:
所以,我的模型中有一个搜索方法如下:
def self.advanced_search(name, min_experience, max_hourly_rate)
where('lower(name) LIKE ? AND experience >= ? AND hourly_rate <= ?', "%#{name.downcase}%", min_experience, max_hourly_rate)
end
现在如果 max_hourly_rate 为空白,那么我会收到此错误:
PG::InvalidTextRepresentation: ERROR: invalid input syntax for type double precision: ""
LINE 1: ...IKE '%%' AND experience >= '5' AND hourly_rate <= '') AND (l...
我没有使用另一个无聊的 if 语句,而是将 max_hourly_rate 设置为无穷大(如果它是空白的)
def self.advanced_search(name, min_experience, max_hourly_rate)
max_hourly_rate = Float::INFINITY if max_hourly_rate.blank?
where('lower(name) LIKE ? AND experience >= ? AND hourly_rate <= ?', "%#{name.downcase}%", min_experience, max_hourly_rate)
end
这种方法有什么缺点吗?如果有,有没有更好的解决方案?
【问题讨论】:
标签: ruby postgresql ruby-on-rails-4 search