2011-07-07 30 views
0

我试图将meta_search应用于表单,其中所有属性中的一个是作者姓名搜索。它作为表格作者中的两个属性“first_name”和“last_name”存储。 我创建的模型作者下列虚拟属性:使用meta_search遍历模型并参考虚拟属性

search_methods :name 

    def name 
    self.first_name + " " + self.last_name 
    end 

作者和书籍的模式,这是一个我在寻找的,是这样的关联:

class Book < ActiveRecord::Base 
    has_many :authors 
.. 

class Author < ActiveRecord::Base 
    belongs_to :book 
.. 

现在,当我试图粘贴视图下输入出现错误:

<%= f.text_field :authors_name_contains, :placeholder => "author.." %> 

但是,如果我申请的条件属性“FIRST_NAME”和“last_n它的工作原理ame“通过视图中的”或“运算符。

我在做什么错?如何使meta_search使用方法“名称”?

回答

0

我不认为你可以这样做。如果我正确理解meta_search,它会查看由ActiveRecord(或任何后端)生成的属性,因此它不会了解有关虚拟属性的任何内容。

+0

据文档中说,它看起来像使用范围这是可能的:https://github.com/dogenpunk/meta_search 但我不能让它的工作。这里还建议使用范围(对于searchlogic虽然): http://stackoverflow.com/questions/2801096/searchlogic-and-virtual-attributes – lyuba

+0

我目前使用这个:'<%= f.search_field :authors_first_name_or_authors_last_name_contains,:placeholder =>“author ..”%> 虽然它在视图中看起来很庞大。 – lyuba

+1

也许您需要在名为authors_name_contains的模型上创建一个范围? – jdc