如何使用'dusen'gem搜索关联的模型值

时间:2014-06-19 12:56:20

标签: ruby search ruby-on-rails-4 indexing

在rails 4.0.2中,我尝试使用名为dusen的搜索插件。使用此功能,我可以搜索相同模型的值,但我无法搜索其他(关联)模型值。我怎样才能实现单一关联(has_one / belongs_to)&多关联(has_many)模型值?

参考链接: https://github.com/makandra/dusen

我使用的宝石是dusen (0.4.10)

在控制器中,

@query = params[:query] || ""
Contact.search(@query)

在模特中,

belongs_to :city, :class_name=>"City"

search_syntax do

 search_by :text do |scope, phrases|
   columns = [:name, :contact_number, :email]
   scope.where_like(columns => phrases)
 end

end

此处,它只会搜索:name, :contact_number, :email个字段,如果我尝试添加下面的代码,那么它会显示错误,如undefined method 'search_text' for #<Dusen::Description:0xb438a248>

search_text do
  [city.name]
end

请为此问题提出解决方案。

1 个答案:

答案 0 :(得分:0)

假设您的型号名称为“用户”,您可以按如下方式进行设置:

# User.rb
belongs_to :city, :class_name=>"City"

search_syntax do

 search_by :text do |scope, phrases|
   # namespaced fields to search by.
   columns = ["users.name", "users.contact_number", "users.email", "cities.name"]
   # specify association to City in scope.
   scope.joins(:city).where_like(columns => phrases)
 end

end

我希望这有帮助!