2013-06-24 45 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