Rails:在数据库外部存储静态查找类型/常量

时间:2016-10-28 14:46:12

标签: ruby-on-rails configuration constants

我有静态查找,用于填充表单字段以及验证属性。

我没有将它们存储在数据库中,因为它们是静态的并且不会更改,核心应用程序逻辑基于这些值(不希望DB值更改破坏应用程序)。

config/initializers/constants.rb

我有几个可行的选项,但我不确定哪一个是最常规的或可能导致问题。像这样的静态常量的Rails约定是什么?

  1. ApplicationRecord
  2. config/constants.yml所有模型都继承自
  3. constants.rb对我来说似乎不太合适,因为将YAML加载到Ruby中需要额外的步骤,那么为什么不选择上面的let questionsAndAnswers = questions.map( (question) => { return { question: question, answer: answers.filter( (answer) => { return answer.idquestion === question.idquestion; })[0]} });
  4. 我有点困惑,因为他们中的任何一个都会起作用,但我确信有一些意想不到的副作用我不会考虑。

1 个答案:

答案 0 :(得分:0)

标准做法是在类(或模块)中定义与它们最相关的常量。在您的示例中,您可以在Applicant中定义它们:

class Applicant < ApplicationRecord
  APPLICANT_TYPES = ["primary", "coborrower"].freeze
end

然后当你使用它们时,通过那个类(或模块)引用它们:

<%= f.select :applicant_type, Applicant::APPLICANT_TYPES %>

这是一个非常普通的回答,但到目前为止它对我很有帮助!

另请查看ActiveRecord::Enum,以防这种模式可以帮助您。