模块,助手还是其他什么?

时间:2014-11-02 15:19:48

标签: ruby-on-rails ruby-on-rails-4

我有一堆白名单函数可以对参数进行一些复杂的验证。如果你必须知道,我有几个控制器接受:

  1. 客户ID

      

    e.g。 customer=cus_123412341234

  2. 客户哈希

      

    e.g。 customer[first_name]=Floating&customer[last_name]=Rock&...

  3. 请记住,有几个控制器执行此操作(例如,可以使用charges ID或哈希在customer端点创建费用。

    现在我想知道 where 我应该放置这些方法(例如customer_hash_params()customer_string_params(),..)?

    我应该:

    1. 将它们作为模块放在lib/文件夹中
    2. 将它们作为帮助程序放在helpers/文件夹中
    3. 别的......
    4. 想知道最佳做法是什么?

2 个答案:

答案 0 :(得分:2)

简而言之,放入app/helpers的助手可能会为控制器和视图提供一些逻辑。它是自动加载的视图,需要包含在控制器中。放置在lib文件夹中的模块或类通常会扩展某些控制器或模型逻辑。除非在application.rb

中指定,否则它不会自动加载到环境中

因为你有一些验证逻辑,适合lib目录,因为在视图中不需要它。我假设这些验证是一种预验证,并且您的模型没有定义所有这些验证字段。否则,为您的模型编写一些自定义验证器是个好主意。

答案 1 :(得分:1)

当我们有很长的方法来支持控制器或模型时,总是使用Rails中的Lib文件夹。这样我们就可以从各种控制器中调用这些方法。

如果这是要求,请去lib文件夹,上课。在不同的控制器和模型中调用这些类方法。