私は必要なことをすることができる場所がいくつかありますが、どこがベストプラクティスに沿っているのかわかりません。Railsのベストプラクティス - このコードはどこにありますか?
オーダーコントローラがあり、オーダーが正常に作成された後、サブスクリプション(オーダーが成功した場合のみ)と参照(オーダーが関連付けられている場合のみ)を作成します。
ここで明白な選択肢は、Orderモデルでafter_createを使用することですが...どのようにしてセッションデータを取得できますか? (照会ID、フレンドID、バウチャーIDは、Order dbに格納する必要がないため、セッション内にのみ存在します)。
作成アクションで購読および紹介オブジェクトを作成するだけです(私が月にどのように持っていますか)、より良い方法がありますか?私は誰を期待していないので、私は本当にこれを適切に行うしたいと思います - (支払いが成功した場合@ order.purchaseのみtrueを返す)
def create
if @order.save
if @order.purchase
Subscription.create(:order_id => @order.id, :product_id => @order.product_id)
if @order.voucher
Referral.create(:user_id => session[:friend_id], :order_id => @order.id,
:voucher_amount => @voucher_value)
end
render :action => "success"
else
render :action => "failure"
end
else
render :action => 'new'
end
end
任意の助けをいただければ幸いです :
は、ここに私のアクションを作成しますたぶん簡単な質問であるかと尋ねています。コールバックの
こんにちは、ありがとう - 仮想属性は、それについて行く興味深い方法のように見えます。このように使用することには、何らかの弱点がありますか? – eBrooker
私は本当に何も持っていません。非常に自然で、コールバックを使用することもできます。 – Spyros
申し訳ありません私は十分なポイントや何かを持っていないので私はあなたの答えをアップアップすることはできません。とにかく私はあなたの提案の組み合わせを行って、すべてをモデルに移し、仮想属性を使用してパラメータを取得しました。残念ながら、コールバックメソッドを使用することはできませんでした。新しいオブジェクトを作成するための属性の1つは、update_attributeが実行された後にのみアクセス可能で、Orderが作成されるまで呼び出されません(最初の投稿の.purchaseメソッドの一部です) 。お返事ありがとうございました! – eBrooker