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