我正在开发一个使用 Datamapper 作为其 ORM 的 Rails 3.2 应用程序。我正在寻找一种通过关联模型的属性对结果集进行排序的方法。具体来说,我有以下模型:
class Vehicle
include DataMapper::Resource
belongs_to :user
end
class User
include DataMapper::Resource
has n, :vehicles
end
现在我希望能够查询车辆并按驾驶员姓名对其进行排序。我尝试了以下方法,但似乎都不适用于 Datamapper:
> Vehicle.all( :order => 'users.name' )
ArgumentError: +options[:order]+ entry "users.name" does not map to a property in Vehicle
> Vehicle.all( :order => { :users => 'name' } )
ArgumentError: +options[:order]+ entry [:users, "name"] of an unsupported object Array
现在我正在使用 Ruby 对查询后的结果集进行排序,但显然这对性能没有任何帮助,它也阻止了我进一步链接其他范围。