2011-07-29 14 views
0

私のアプリケーションは契約と注文を持っています。取引を表示するときに私の管理領域にリンクをクリックして注文を手動で処理しています。別のコントローラ - レール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モデルでの購入方法にアクセスし、どのようにあればすることは可能ですか?

答えて

3

あなたはそれを呼び出してみましたか?

コントローラとモデルは、不可解な魔法によってリンクされていません。希望のクラス(コントローラ)から任意のクラス(つまりモデル)を参照できます。制限はありません。

+0

こんにちはライアン、ありがとうございます。しかし、私はそれ以前に行う必要はありませんでした。私の注文モデルでは、@ order.purchaseを呼び出すだけですが、私の取引コントローラからは、Orderモデルでメソッドを呼び出す方法がわかりません。 –

+1

@Robert:メソッドは、あなたの 'Order'モデルのインスタンスで利用できるので、利用可能になります。どのコントローラーを使用しているかに基づいてモデルに制限があると考えるのをやめる必要があります。単純にはありません。単にあなたがやっているのと同じように 'order.purchase'を呼び出すとうまくいくでしょう。 –

+0

あなたの助けに感謝ライアン。 –

-2

Railsを使う前に、Rubyでオブジェクト指向プログラミングとクラスについて読んでください。個人的なものではありませんが、アルファベットを理解することなく本を書くことはできません。私は自分の経験からそれを知っています。

+2

私はやって学ぶのが好きで、実際の世界の問題に基づいて話題についてのより多くの情報を読んでいます。私はRubyとOOPに関する知識が少し不足していることに同意します。だから、これは良い考えだと思います。 :) –

関連する問題