2

次の表と対応するモデルがあります。

Orders
ID|ORDER_REF|....

注文参照の形式は「ORDER#000-00」+ ORDER.IDです。重要なのは、挿入時に注文参照が設定されるように有効にする必要があるということです。挿入後に更新を行わずにこれを行う方法はありますか?ここではRoRを使用しています。

4

1 に答える 1

3

データベースにそのデータが本当に必要ですか?id最良の方法は、データベース内のに基づいて、目的の形式で注文参照を返すメソッドをモデルに設定することです。

class Order < ActiveRecord::Base
  def order_ref
    "ORDER#000-#{self.id.to_s.rjust(3, '0')}"
  end
end

アボベを使用すると、これを行うことができます:

order = Order.create(params[:order])
order.id #=> 12
order.order_ref #=> "ORDER#000-012"

データベースに注文参照が必要な場合はafter_createコールバックを使用することをお勧めします。

class Order < ActiveRecord::Base
  after_create :generate_order_ref

  def generate_order_ref
    self.order_ref = "ORDER#000-#{self.id.to_s.rjust(3, '0')}"
    save
  end
end

これ挿入後に更新を行いますが、問題はありません。

于 2012-05-21T09:05:34.280 に答える