在rails

时间:2016-12-01 15:58:10

标签: ruby-on-rails

我已经生成了三种不同的支架,即教育健康工作,所有这些都包含五个字符串。我应该如何进行搜索以搜索所有这些字符串。 例如:我的教育脚手架有一个名为PRIMARY SCHOOL的字符串, 因此,如果用户搜索纽约最佳小学,则应返回PRIMARY SCHOOL字符串中提交的所有结果。

1 个答案:

答案 0 :(得分:0)

每当你尝试在Rails中进行多表搜索时,你就会打破ActiveRecord::Base背后的某些想法。

最好,您可以强制搜索各个表。 然后,对于每个模型,您可以创建search方法。

def self.search(query)
  query = "%#{query}%"
  where(
    'column_1 LIKE ?
  OR column_2 LIKE ?
  OR column_3 LIKE ?
  OR column_4 LIKE ?
  OR column_5 LIKE ?',
  query,
  query,
  query,
  query,
  query
  )
end

否则,要实现多表搜索,您需要手写查询。

我会不惜一切代价避免这种情况。

query = 'PRIMARY SCHOOL'
sql = <<SQL
  SELECT educations.*,
         healths.*,
         jobs.*,
  FROM educations,
       healths,
       jobs
  WHERE (each_table.each_column LIKE "%#{query}%")
SQL

records = ActiveRecord::Base.connection.execute(sql)

records.each do |record|
  # ...
end

这是在Ruby on Rails中使用SQL的一种非常推荐的方法。