0

誰かが以下のコードを理解するのを手伝ってくれますか?

def self.with_optimistic_lock(attrs)
  begin
    payment = where(attrs).first_or_create
    yield(payment)
    payment.save!
  rescue ActiveRecord::StaleObjectError, ActiveRecord::StatementInvalid, ActiveRecord::RecordInvalid => e
    retry
  end
end

attrsパラメータのハッシュはどこにありますか。Postから継承するクラスActiveRecord::Baseです。

これはhttps://github.com/fantgeass/rails-test-tasks/blob/master/app/models/payment.rbのコード スニペットです。

4

1 に答える 1

1

他のブロックと同じように生成され、生成されたオブジェクトがブロックで使用可能になります。

Post.with_optimistic_lock(:name => "Foo") do |post|
  # The 'post' variable contains the ActiveRecord object yielded from the method

  # Once this block ends, the method will resume at the `payment.save!` line
end
于 2013-10-01T14:40:46.703 に答える