0

我所拥有的是在 Class 方法中调用的命名范围。对 Array 进行了额外的排序。我想要做的是在一个步骤中执行 named_scope 和排序。我排序的属性不是数据库中的列,它是计算值。我需要的是处于“已创建”状态的最旧事务。

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”。
def update_date 将 mmddyy 转换为 ccyymmdd end

4

2 回答 2

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
于 2013-06-24T13:35:05.593 回答
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 
于 2013-06-25T21:07:54.400 回答