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