【发布时间】:2012-10-08 15:09:34
【问题描述】:
将 Rails 2 应用程序转换为 Rails 3,我必须替换 gem searchlogic。现在,使用带有 gem Ransack 的 Rails 3.2.8 我想构建一个使用现有范围的搜索表单。示例:
class Post < ActiveRecord::Base
scope :year, lambda { |year|
where("posts.date BETWEEN '#{year}-01-01' AND '#{year}-12-31'")
}
end
据我所知,这可以通过定义自定义ransacker 来实现。可悲的是,我没有找到任何关于此的文档。我在Postclass 中试过这个:
ransacker :year,
:formatter => proc {|v|
year(v)
}
但这不起作用:
Post.ransack(:year_eq => 2012).result.to_sql
=> TypeError: Cannot visit ActiveRecord::Relation
我尝试了ransacker 声明的一些变体,但它们都不起作用。我需要一些帮助...
更新: 上述范围仅作为示例。我正在寻找一种方法来使用 Ransack 中的每个现有范围。在 Ransack 的前身 MetaSearch 中,有一个名为 search_methods 的功能用于使用范围。 Ransack 有开箱即用的no support for this。
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-3 arel ransack