在哪里/如何包含地理辅助方法 - Rails?

时间:2015-09-04 00:29:35

标签: ruby-on-rails rspec model helper

我有一个帮助方法states_list,它返回了我想要在我的Rails应用程序的几个不同位置访问的美国州数组,包括:

  • 用户模型:validates :state, inclusion: { in: states_list }
  • 用户型号规范:测试此验证

除了User模型之外,这些将在其他地方重复使用。我想知道存储这个辅助方法的适当位置在哪里,以及如何从模型和测试中访问它。 (我最初的想法是在帮助程序目录中的GeographyHelper文件中,但我读到那些特意是视图助手......)谢谢!

2 个答案:

答案 0 :(得分:1)

states_list方法放在自己的模块中并将其包含在用户模型中可能是最好的服务。创建模块的好处是可以很好地分离和重用您的问题(如果您想要验证其他模型中的状态。

1)创建一个放置模块的地方,方法是进入/lib目录并为自定义模块创建一个目录(我们在这里称之为custom_modules)。

2)创建模块文件:/lib/custom_modules/States.rb

3)编写模块:

module CustomModules

  module States

    def states_list
      #your logic here
    end

  end
end

4)在您的用户模型或您希望使用此功能的任何其他模型中包含新的状态模块。

class User < ActiveRecord::Base

  include CustomModules::States

  validates :state, inclusion: { in: states_list }
end

答案 1 :(得分:0)

您可以将此方法存储在application helperuser model自己。