私のアプリケーションは契約と注文を持っています。取引を表示するときに私の管理領域にリンクをクリックして注文を手動で処理しています。別のコントローラ - レール3のモデル方法を使用
ビュー/私の/controllers/access/deals_controller.rbでアクセス/取引/ index.html.erb
<%= link_to "Process Orders", process_orders_access_deal_path(deal) %>
、私は次のような方法があります。
def process_orders
@deal = Deal.find(params[:id])
@orders = @deal.orders.where("state" == ?, "pending")
@orders.each do |order|
order.purchase
end
end
私の購入方法は、私が注文がすぐに処理されない変更を行うために必要とする前にそこにそれを設定するので、それは私の注文モデルにだ、私の取引モデルではありません。
注文コントローラの購入方法。
def purchase
response = Order.gateway.purchase(order_amount, billing_id, options)
end
それは私の/controllers/access/deals_controller.rbから私のorder.rbモデルでの購入方法にアクセスし、どのようにあればすることは可能ですか?
こんにちはライアン、ありがとうございます。しかし、私はそれ以前に行う必要はありませんでした。私の注文モデルでは、@ order.purchaseを呼び出すだけですが、私の取引コントローラからは、Orderモデルでメソッドを呼び出す方法がわかりません。 –
@Robert:メソッドは、あなたの 'Order'モデルのインスタンスで利用できるので、利用可能になります。どのコントローラーを使用しているかに基づいてモデルに制限があると考えるのをやめる必要があります。単純にはありません。単にあなたがやっているのと同じように 'order.purchase'を呼び出すとうまくいくでしょう。 –
あなたの助けに感謝ライアン。 –