在Rails中使用Ransack搜索字符串为整数

时间:2014-08-27 17:44:06

标签: ruby-on-rails ransack

我正在使用Ransack gem为模型设置搜索表单。模型有一个字段:size,它存储为字符串。我想做一个“使用lte和gte”的比较搜索。在使用ransack进行搜索时,如何将此字段转换为整数?

1 个答案:

答案 0 :(得分:0)

您是否尝试过设置一个返回字符串长度的简单方法?

def size_length
  size.length
end

然后你的搜索可能是Model.search(:size_length_lteq => comparison)

还有一个自定义匹配器呢?不确定这是否有效,但可能值得一试。

# config/initializers/ransack.rb
Ransack.configure do |config|
  config.add_predicate 'string_lteq',
    arel_predicate: 'lteq',
    formatter: proc { |v| v.length },
    validator: proc { |v| v.present? },
    type: :string
end