First()在订单子句Rails 4.2中使用了错误的别名

时间:2015-06-16 07:54:58

标签: ruby-on-rails ruby ruby-on-rails-4 rails-activerecord

在Rails 4. *中调用first将向SQL查询添加隐式顺序。 尝试这样做时我的订购有问题:

MyModel.select('my_model.*').from('my_model mm')
       .joins(joins_statement)
       .where(where_statement)
       .first

它引发了异常:

ActiveRecord::StatementInvalid: Mysql2::Error: Unknown column 'my_model.id' in 'order clause': 
SELECT  mm.* FROM my_model mm 
JOIN joins_statement 
WHERE where_statement 
ORDER BY `my_model`.`id` ASC LIMIT 1

如果不在.first调用的所有关系中添加.order(),我应该怎么做才能修复此错误?

P.S。我有Rails 4.2.1,ruby-2.1.4。

1 个答案:

答案 0 :(得分:0)

您可以使用limit来获取单个记录:

MyModel.select('my_model.*').from('my_model mm')
   .joins(joins_statement)
   .where(where_statement)
   .limit(1)

与使用first相同,只是没有订购。