2013-07-27 71 views
0

我試圖搜索我的Ticket模型中的所有列。大多數列都與belongs_to關聯相關聯,所以我必須搜索列中信息的屬性,因爲人們不知道這些ID。導軌搜索多個模塊的多個屬性

這些文章幫助: Search multiple db columns in Rails 3.0

Rails: Search in has_one association

到目前爲止,我有下面的代碼,但它僅搜索頂部PARAM。我怎樣才能得到它,如果它沒有找到任何東西在頂部搜索,它會嘗試下一個。我會加入更多。

感謝

def self.search(search) 
    if search 
    Ticket.joins(:submitter).where('first_name LIKE ?', "%#{search}%") 
    elsif 
    Ticket.joins(:issue).where('name LIKE ?', "%#{search}%") 
    else 
    all 
    end 
end 

我想通了,更新正確的代碼在這裏:

def self.search(search) 
case search 
when /^[-+]?[0-9]*\.?[0-9]+$/ 
    Ticket.find(:all, :conditions => ['id LIKE :search', {:search => "%#{search}%"}]) 
else 
    Ticket.joins(:submitter,:issue).find(:all, :conditions => ['name LIKE :search OR first_name LIKE :search', {:search => "%#{search}%"}]) 
end 
end 
+0

什麼東西被傳遞作爲參數傳遞給函數? –

+0

這是你在找什麼? '<%= text_field_tag:search,params [:search],:placeholder =>「搜索票據」,:type =>「search」%>' – Devin

+0

這是在我的票務控制器中'@tickets = Ticket.where(:school_id => @ current_user.school_id).order('id DESC')。search(params [:search])' – Devin

回答

1

上面更新代碼 - 答案發現