如何在关联模型上使用搜索功能

时间:2016-07-16 10:22:50

标签: ruby-on-rails ruby-on-rails-4 activerecord ruby-on-rails-5

通过使用railscast视频,我创建了一个适用于同一模型的简单搜索。但现在我有一个模型显示相关的模型数据,我也想搜索它们。

现在我设法让它半工作,但我认为我有冲突,如果我将字段“名称”添加到连接中,因为我有两个模型有一个名为“名称”的列

def self.search(search)
    if search
      key = "'%#{search}%'"
      columns = %w{ city station venue area country plate_number }
      joins(:services).joins(:washer).joins(:location).where(columns.map {|c| "#{c} ILIKE #{key}" }.join(' OR '))
    else
      where(nil)
    end
  end

我需要更改什么以确保我可以搜索所有列?

1 个答案:

答案 0 :(得分:1)

我认为当你在加入后有一个不明确的字段名称时,你可以提到table_name.field_name,这样就可以消除歧义并起作用。类似的东西。

joins(:services).joins(:washer).where("services.name = ? or washer.name = ?", "test", "test")