Rails - 存储集合的位置

时间:2013-08-14 11:41:38

标签: ruby-on-rails collections

我的表单中有很多select选项,其中包含一系列可能的选项。

E.g:

title_options = %w[Mr Mrs Miss Ms Dr]

在我看来,我将渲染select(使用formtastic):

<%= f.input :title, :as => :select, :collection => title_options %>

目前,我将标题选项存储在helper文件中,每个select都有多种方法:

module SelectHelper
  def days_options
    ...
  end

  def title_options
    ...
  end

  ..
end

然后,在验证模型中,我可以扩展这个帮助器:

class user < ActiveRecord::Base
  extend SelectHelper 
  validates :title, :inclusion => {:in => title_options}
end

或复制选项:

class user < ActiveRecord::Base
  validates :title, :inclusion => {:in = %w[Mr Mrs Miss Ms Dr]}
end

有没有更好的方法来存储集合,例如,直接作为模型中的方法?我认为没有必要将这些选项存储在数据库中,因为它们不应该更改。

2 个答案:

答案 0 :(得分:1)

嗯,为简化起见,您可以将此集合存储在类中的常量中。

class User < ActiveRecord::Base 
  TITLES = %w[Mr Mrs Miss Ms Dr]
  validates :title, :inclusion => {:in => TITLES}

答案 1 :(得分:0)

您可以尝试使用enumerated_attribute gem或某些相同的功能