我在尝试实现伪枚举字段时使用了rails 3.1.0.rc5。validates_inclusion_of在静态数据上始终失败
我想验证绑定到静态列表的字段的值。不幸的是它总是无法验证。
型号代码>
STATUSES = %w(pending active completed)
validates_inclusion_of :status, :in => STATUSES, :on => :create, :message => "%{value} must be one of #{STATUSES.join ', '}"
形式标记>
<div class="field">
<%= f.label :status %><br />
<%= select_tag :status, options_for_select(Task::STATUSES, @task.status) %>
</div>
不幸的状态验证程序总是失败。看着帖子数据,它包含一个值,它是有效的..所以我不知道发生了什么?
我试过加入以下以及基于谷歌上搜索一些
def status=(value)
write_attribute(:status, value.to_s)
end
def status
attributes = attributes_before_type_cast
if attributes["status"]
read_attribute(:status).to_sym
else
nil
end
end
然而,状态=(二传)似乎永远不会被调用。
谢谢!
非常感谢你......我正在查看帖子数据,但没有看到状态字段前的右大括号......它已经很晚了= \ 这帮助我解决了另一个问题,那就是我有太多..谢谢! – Mike
只是为了防止任何人有选择处理相关字段..这似乎对我最有效 <%= collection_select(:task,:assigned_to,User.all,:id,:name, :prompt =>'请选择用户')%> – Mike