レコードが作成済みかどうかを一意のIDで確認したい。そうであれば、amount 属性に 1 を加えたいと思います。そうでない場合は、作成して amount 属性を 1 に設定します。
私はすでにこれを持っています:#@have = current_user.haves.create_or_update_by_id(params[:have])
しかし、どのように金額を正しく設定するのかよくわかりません.
ありがとう
レコードが作成済みかどうかを一意のIDで確認したい。そうであれば、amount 属性に 1 を加えたいと思います。そうでない場合は、作成して amount 属性を 1 に設定します。
私はすでにこれを持っています:#@have = current_user.haves.create_or_update_by_id(params[:have])
しかし、どのように金額を正しく設定するのかよくわかりません.
ありがとう
ActiveRecordのincrement
メソッド(ドキュメント)を使用します。
@have = current_user.haves.find_or_initialize_by_id(params[:have])
@have.increment(:amount)
@have.save
nilの場合、amount属性をゼロに初期化し、渡された値を追加します(デフォルトは1)。nilでない場合は、属性値をインクリメントするだけです。
おそらくこれを2つの操作に分割します。
@have = current_user.haves.find_or_initialize_by_id(params[:have]) do |h|
h.amount = 0
end
@have.amount += 1
@have.save
最初のステートメントは、一意の ID でレコードを検索するか、提供された ID と金額を 0 に設定して新しいレコードを初期化します。ブロックは、検索ではなく初期化時にのみ実行されます。次に、元の状態に関係なく量を増やし、レコードをデータベースに保存します。