2011-01-13 7 views
1

私のアプリで検索を実装するには、http://railscasts.com/episodes/37-simple-search-form(ただし、更新版ですが)が続きます。リンクされたデータを検索するためにレールで簡単な検索を変更しますか?

今すぐ検索すると、1つのテーブルが検索されます。その表が別の表または結合表にリンクされている場合はどうなりますか?それらのフィールドを検索する方法はありますか?

現在、私はそれが一つのテーブルからフィールドに検索抱えているので、私は、これを言う:

def self.search(search) 
    if search 
     where('LOWER (description) LIKE ? OR LOWER (title) LIKE ?', "%#{search}%" , "%#{search}%") 
    else 
     scoped 
    end 
    end 

が、私は実際にそれが同様にリンクされたテーブルを検索したいと思います。何か案は?

答えて

2

はい、あなたは追加することができますが

# models/project.rb 
def self.search(search) 
    if search 
    find(:all, :joins => :other_model, :conditions => ['projects.name LIKE :search or other_models.name LIKE :search', {:search => "%#{search}%"}]) 
    else 
    find(:all) 
    end 
end 

OKを見つけるに参加し、これはあなたがsearchlogicを見てみることができ

def self.search(search) 
     if search 
     joins(:other_model).where('LOWER (projects.description) LIKE ? or LOWER (other_models.name) LIKE ?', "%#{search}%", "%#{search}%") 
     else 
     scoped 
     end 
    end 
+0

(:all)がrails3で動作しますか? – Elliot

+0

はい、これは...これは興味深い記事ですが、将来については、http://m.onkey.org/active-record-query-interface –

+0

これは本当に便利な3の構文です:Client.joins(: orders).where( 'orders.created_at' => time_range)。チェックアウト:http://guides.rubyonrails.org/active_record_querying.html –

0

将来のためのより良い例でしょう(それはレールを持っていますgithub上の3つの枝)それはより簡単に検索を行います!

関連する問題