2

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

例如:

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

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

4

2 回答 2

1

好吧,为了简化事情,您可以将此集合存储在类中的常量中。

class User < ActiveRecord::Base 
  TITLES = %w[Mr Mrs Miss Ms Dr]
  validates :title, :inclusion => {:in => TITLES}
于 2013-08-14T11:49:54.687 回答
0

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

于 2013-08-14T11:58:32.863 回答