2011-07-07 3 views
0

私はすべての属性の中で著者名による検索であるフォームにmeta_searchを適用しようとしています。これは、テーブルの作成者に2つの属性 "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 "をここの" or "演算子に渡します。

私は間違っていますか? meta_searchにメソッド "name"を使用させるには?

答えて

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

関連する問題