Sql 在rails中将一个表的内容复制到另一个表中

Sql 在rails中将一个表的内容复制到另一个表中,sql,ruby-on-rails,activerecord,Sql,Ruby On Rails,Activerecord,我有两张桌子在栏杆上。。 待定产品 加工产品 在待定产品中有一个状态字段。。 将记录添加到挂起表或更新记录时,状态设置为1。 当我想要处理时,我将所有1更改为2,然后选择所有2。 当我处理完所有记录后,我将所有的2更改为1000。。这似乎是一个很好的数字 如果您想知道为什么我将其设置为2,那么如果在我处理过程中出现提要,它将不会更新该记录,因为提要会将状态设置为1 在将所有2更改为1000之前,我希望插入到已处理的表中 现在我可以在纯SQL中插入,但我想知道是否有rails方法可以做到这一点。。

我有两张桌子在栏杆上。。 待定产品 加工产品

在待定产品中有一个状态字段。。 将记录添加到挂起表或更新记录时,状态设置为1。 当我想要处理时,我将所有1更改为2,然后选择所有2。 当我处理完所有记录后,我将所有的2更改为1000。。这似乎是一个很好的数字

如果您想知道为什么我将其设置为2,那么如果在我处理过程中出现提要,它将不会更新该记录,因为提要会将状态设置为1

在将所有2更改为1000之前,我希望插入到已处理的表中


现在我可以在纯SQL中插入,但我想知道是否有rails方法可以做到这一点。。比原始SQL更优雅的东西。

类似的东西可能适合您:

class PendingProduct < ActiveRecord::Base
  OUTSTANDING = 1
  PROCESSING = 2
  PROCESSED = 1000

  scope :outstanding, where(status: OUTSTANDING)

  def process
    transaction do
      self.status = PROCESSING
      self.save!

      # do whatever processing you need to do...

      # ...then create your ProcessedProduct record...
      ProcessedProduct.create!( ... )

      # ...and finally update this PendingProduct
      self.status = PROCESSED
      self.save!
    end
  end
end

PendingProduct.outstanding.each(&:process)

这可以说比原始SQL更优雅,但它肯定会更慢。

如果您已经有了状态,为什么需要移动任何东西?在处理。。。原始SQL。出于好奇,您实际上是在PendingProduct和ProcessedProduct中建模不同的数据,还是它们只是在状态字段上有所不同?有两个不同的模型似乎很奇怪,因为其中一个还没有被处理。表中的数据差别很大。插入将是处理第二阶段的第一步。是的。。我不能为了优雅而牺牲速度。不是这样的规模。不过,我确实喜欢交易。。我不知道你能做到。