2015-09-23 95 views
1

我想搜索查詢兩個表(users.name,users.email,object.name) 當我鍵入:搜索查詢兩個表

def self.search(query) 
    query = "%#{query}%" 
    where("(name like ? or email like ? or surname like ?)", query, query, query) 
    end 

它完美地工作,但現在我想添加一個字段從其他表中搜索

def self.search(query) 
     query = "%#{query}%" 
     joins(:object).where("(objects.name like ? or name like ? or email like ? or surname like ?)", query, query, query, query) 
     end 

錯誤:

`User Load (0.2ms) SELECT `users`.* FROM `users` WHERE `users`.`id` = 120 ORDER BY `users`.`id` ASC LIMIT 1 
    (1.2ms) SELECT COUNT(*) FROM `users` INNER JOIN `objects` ON `objects`.`id` = `users`.`object_id` WHERE ((objects.name like '%ver%' or email like '%ver%' or name like '%ver%' or surname like '%ver%')) 
Mysql2::Error: Column 'name' in where clause is ambiguous: SELECT COUNT(*) FROM `users` INNER JOIN `objects` ON `objects`.`id` = `users`.`object_id` WHERE ((objects.name like '%ver%' or email like '%ver%' or name like '%ver%' or surname like '%ver%')) 
Completed 500 Internal Server Error in 6ms 
` 

我的模型

User belongs_to :object 
Object has_many :users 

如何添加其他表?

回答

2

你還應該指定第二個名稱表:

def self.search(query) 
    query = "%#{query}%" 
    joins(:object).where("(objects.name like ? or users.name like ? or email like ? or surname like ?)", query, query, query, query) 
end 
+0

你使我的天!:) – Kam