Rails - 搜索多个表

时间:2016-01-14 11:46:30

标签: ruby-on-rails ruby

目前,我的模型

有以下搜索方法
class Bike < ActiveRecord::Base
  belongs_to :customer
  belongs_to :bike_model

  def self.search(search, page)
    fields = [:frame_number]
    order('frame_number ASC').where(fields.map{|f| "#{f} like ?"}.join(' OR '),
                            *fields.map{|f| "%#{search}%"})
  end
end

但是这个模型的属性并不是真正可搜索的(至少不是用户友好的)。我想加入两个外国表并搜索它们。

我发现this问题可能会解决这个问题,但它不是通用的。

所以这是我的想法:

class Bike < ActiveRecord::Base
  belongs_to :customer
  belongs_to :bike_model

  def self.search(search, page)
    fields = [:frame_number, :customers.lastname]
    joins(:customer).joins(:bike_model).order('frame_number ASC').where(fields.map{|f| "#{f} like ?"}.join(' OR '),
                            *fields.map{|f| "%#{search}%"})
  end
end

如何在多个表上实现通用搜索?我想只获得自行车对象(customer_id符合客户所需的属性)。

作为奖励我想通过customer.lastname订购,那会有用吗?

order('bike_customer.lastname ASC')

0 个答案:

没有答案