0
私は、ユーザーは、彼らが受け取ったことのコードを有効にすることができ、プロセスを持っている:アクティベーションプロセスは、次の操作を行う必要があります。Railsでクレジットアクティベーションコードを正しく処理する方法は?
- 作成したユーザーアカウント(User.credits)
- にXクレジットを追加新しいクレジットログ項目(履歴の目的のみ)
- コードを有効にして、ユーザーが再度アクティブ化できないようにします。
このタスクには特定のコントローラがあります。私は "code_activate"メソッドを作成しました。しかし、それはACIDに準拠していない、と私は信じている。これはいくつかのモデル(ユーザー?)のメソッド、または私がそれをやったようなコントローラにする必要がありますか?どのように "正しい方法"を実装しますか?
は、ここでは、コードです:
def code_activate
code = CreditCodes.find_by_code(params[:code])
unless code
render :json => { :success=>false, :message=>(t :codedoesnotexist)}
return
end
if code.activated
render :json => { :success=>false, :message=>(t :codealreadyactivated)}
return
end
# Add credits to user
current_user.credits += code.amount
current_user.save
# Save credit log record
cl = current_user.creditlog.new
cl.actionid = 1
cl.amount = code.amount
cl.save
# Set code as activated
code.activated = true
code.save
# Show success message
render :json => { :success=>true, :message=>((t :creditsadded).gsub(/@[email protected]/, code.amount.to_s)) }, :status => :ok
end