访问模型中的辅助方法

时间:2014-05-05 10:50:35

标签: ruby-on-rails

我的应用程序控制器中有一个帮助方法,我需要在模型中使用(但显然我的视图也可以使用它)。从我正在阅读的内容来看,这是应该避免的,因为模型不应该在控制器中看到任何东西。所以我似乎需要重构我的代码或创建一个模块或什么,但我不知道正确的做法是什么?

这是我在应用程序控制器中的帮助方法:

def total_price

Product.where(id: basket.to_a).sum(:price)

end

非常感谢

2 个答案:

答案 0 :(得分:1)

我建议你将它重构为模型类方法,如下所示:

class Product

  def self.total_basket_price(basket)
    where(id: basket.to_a).sum(:price)
  end

end

然后您可以在模型中以及控制器和视图中使用它,只需调用:

Product.total_basket_price(basket)

希望这有帮助。

答案 1 :(得分:0)

在模型中添加以下内容

    module Helper
        extend ActionView::Helpers
        extend YourModelHelper
      end

并使用Helper.any_method

进行访问
相关问题