2011-07-29 2 views
0

Мое приложение имеет сделки и заказы. Я обрабатываю заказы вручную, щелкнув ссылку на мою область моего администратора при просмотре сделок.Использование метода модели из разных контроллеров - Rails 3

просмотров/доступ/предложения/index.html.erb

<%= link_to "Process Orders", process_orders_access_deal_path(deal) %> 

В моем /controllers/access/deals_controller.rb, у меня есть следующий метод.

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 

Можно ли получить доступ к методу покупки в моей order.rb модели от моего /controllers/access/deals_controller.rb, и если да, то как?

ответ

3

Вы пробовали называть его?

Контроллеры и модели не связаны какой-то необъяснимой магией. Вы можете ссылаться на любой класс (т. Е. Модель) из любого другого класса, который вы хотите (например, контроллера). Нет никаких ограничений.

+0

Привет, Райан, спасибо, но мне не пришлось это делать раньше, поэтому я не знаю, как это сделать. В моей модели заказа я бы просто позвонил @ order.purchase, но из моего контроллера сделок я не уверен, как вызвать метод в модели Order. –

+1

@Robert: Метод будет доступен, поскольку он доступен для экземпляров вашей модели 'Order'. Вам нужно перестать думать, что существует ограничение на модели, основанные на том, на каком контроллере вы находитесь. Там просто нет. Просто позвоните 'order.purchase' точно так же, как и вы, и это сработает. –

+0

Спасибо за вашу помощь Райан. –

-2

Перед использованием Rails прочитайте что-нибудь об объектно-ориентированном программировании и классах в Ruby. Пожалуйста, не считайте это личным, но вы не можете писать книгу без понимания алфавита. Я знаю это по собственному опыту.

+2

Мне нравится учиться, а затем основываться на проблемах реального мира и читать дополнительную информацию по этой теме. Я согласен с тем, что моих знаний о Ruby и OOP немного не хватает, поэтому я думаю, что это хорошая идея. :) –

Смежные вопросы