我有一个User
模型(顺便说一下,使用Devise)。
我添加了一组自定义字段,其中一些具有相当复杂的值(如就业状况,行业等)。
我尝试使用我在User
模型中定义的预定义值集,以便我可以:
让我们选择性别"例如,字段设置和验证。它很接近,但是当我在这里验证第二个例子时,我无法让它工作:
class User < ActiveRecord::Base
validates :gender,
:inclusion => { :in => proc { |record| record.options_gender } }
# Attempt 1: This doesn't work, but is what I need, because it defines both values to store, and also text strings to display.
def options_gender
[
['Male','male'],
['Female','female'],
['I\'d rather not say','nonspecific']
]
end
# Attempt 2: This does work for the validation, but doesn't let me define the corresponding text to display
def options_gender
['male', 'female', 'nonspecific']
end
end
我的options_gender
也被提取到用户的编辑表单中:
<%= f.input :gender, :collection => @user.options_gender, label: "Which gender do you identify as?" %>
也许有一种方法可以修复尝试1 以正确验证,或者我可以用来实现此目的的其他技术。
答案 0 :(得分:0)
试试这个
class User < ActiveRecord::Base
validates :gender, inclusion: { in: proc {|user| user.options_gender.keys }}
def options_gender
{'male'=>'Male', 'female'=>'Female', 'nonspecific'=>'I\'d rather not say'}
end
end
和这个
<%= f.input :gender, :collection => @user.options_gender.sort.map {|k,v| [v,k]}, label: "Which gender do you identify as?" %>