目前,我的模型
有以下搜索方法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')