在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
请为此问题提出解决方案。
答案 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
我希望这有帮助!