我正在从 MetaSearch gem 迁移到 Ransack gem 以升级到 Rails 3.1,但我在搜索多态关联时遇到了问题。现有的 MetaSearch 语法不适用于 Ransack,但我找不到任何提及任何语法更改的文档。或者 Ransack 是否支持此功能。
例如,从 MetaSearch github 页面,给定以下类:
class Article < ActiveRecord::Base
has_many :comments, :as => :commentable
end
class Post < ActiveRecord::Base
has_many :comments, :as => :commentable
end
class Comment < ActiveRecord::Base
belongs_to :commentable, :polymorphic => true
validates_presence_of :body
end
您可以像这样在表单中创建一个搜索字段(这显然是从 Searchlogic 借来的约定):
<%= f.text_field :commentable_article_type_body_contains %>
我正在使用这种类型的语法,它在 MetaSearch 中运行良好,但是使用 Ransack,当查询参数包含此字段时,我的应用程序会引发异常。例外是:
ActiveRecord::EagerLoadPolymorphicError (Can not eagerly load the polymorphic association :ownable)
有谁知道如何在 Ransack 中进行此类搜索?