【问题标题】:Search Query in two table在两个表中搜索查询
【发布时间】:2015-09-23 15:04:34
【问题描述】:

我想在两个表中搜索查询(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

如何添加其他表格?

【问题讨论】:

    标签: mysql ruby-on-rails ruby ruby-on-rails-4


    【解决方案1】:

    您还应该指定第二个名称表:

    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-04-17
      • 1970-01-01
      • 2016-11-27
      • 2018-05-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-13
      相关资源
      最近更新 更多