2013-06-24 47 views
0

我所拥有的是在Class方法中调用的命名作用域。在阵列上进行额外的排序。我想要做的是做named_scope并在一个步骤中排序。我排序的属性不是数据库中的列,而是计算值。我需要的是处于“已创建”状态的最早的交易。Rails 3 ActiveRecord排序计算属性

scope :transactions_in_created_status, 
     where('trnsts in (?) and regsam = ?', 'Created', TYPE) 

def self.oldest_transaction_in_created_status 
    result = Transaction.transactions_in_created_status.sort{|a,b|   [a.update_date,a.update_time] <=> [b.update_date, b.update_time]}   
    result[0] 
end 

我尝试了下面发布的内容,但是我找不到ODBC错误“update_date”。
高清UPDATE_DATE 转换一个MMDDYY到CCYYMMDD 结束

回答

1
scope :transactions_in_created_status, 
     where('trnsts in (?) and regsam = ?', 'Created', TYPE).order('update_date DESC, update_time DESC') 

然后拿到1你可以先打电话:

Transaction.transactions_in_created_status.first 
+0

感谢您的帮助和建议。在计算字段上使用.order时,我仍遇到困难。 – Pan

0
scope :transactions_in_created_status, 
    where('trnsts in (?) and regsam = ?', 'CREATED', TYPE) do 
    def oldest 
     sort{|a,b|[a.update_date,a.update_time] <=> [b.update_date, b.update_time]}.first  
    end 
    end