您好我正在使用ruby-2.5.0和rails 5开发Ruby on Rails项目。我编写了一个api来检查散列中是否存在某些单词,如下所示: -
parser_controller.rb
# frozen_string_literal: true
class ParserController < ApplicationController
def create
search_words = ["Walmart","Optical","Anker"]
if search_words.select{|w| parser_params.to_s.include?(w) }
render json: {}, status: 200
else
render json: {}, status: 404
end
rescue StandardError
render json: {}, status: 500
end
private
def parser_params
params.require(:data)
.permit!
.transform_keys(&:underscore)
end
end
我想知道我应该在哪里放置这个数组search_words = [“Walmart”,“Optical”,“Anker”],因为它的大小可以增加。请帮我。谢谢你。
答案 0 :(得分:2)
如果search_words仅在ParserController中使用,则将其设置为常量SEARCH_WORDS
class ParserController < ApplicationController
SEARCH_WORDS = ["Walmart","Optical","Anker"]
def create
if SEARCH_WORDS.select{|w| parser_params.to_s.include?(w) }
render json: {}, status: 200
else
render json: {}, status: 404
end
...
end
end
如果search_words在多个控制器中使用,请在ApplicationController中设置常量SEARCH_WORDS
如果在任何地方使用search_words(models / helpers / custom class / ...),请在application.rb或config / initializers / global_constant.rb中设置常量
如果经常增加或减少search_words,请创建模型(db表)来存储它们。
答案 1 :(得分:1)
您可以在lib文件夹中定义单例类,如下面提到的链接中所述:
how do I create a singleton global object in rails
或者您可以在config / initializers中创建一个文件,您可以在其中定义数组并在应用程序中的任何位置使用它。