gpt4 book ai didi

ruby - validates_inclusion_of 对静态数据总是失败

转载 作者:太空宇宙 更新时间:2023-11-03 16:57:11 25 4
gpt4 key购买 nike

我在尝试实现伪枚举字段时使用 Rails 3.1.0.rc5。

我正在尝试验证绑定(bind)到静态列表的字段的值。不幸的是,它总是无法通过验证。

型号

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

然而,status= (setter) 似乎永远不会被调用。

谢谢!

最佳答案

如果不查看您的 Controller ,我无法判断,但我假设您的 Controller 正在做类似的事情:

# I'm naming the model User but this would be the name of the model you're using
@user = User.create(params[:user])

您的表单将发布如下内容:

{ :status => 'pending' }

什么时候应该像这样将状态放入用户哈希中:

{ :user => { :status => 'pending' } }

您需要更改表单以正确发布属性:


关于ruby - validates_inclusion_of 对静态数据总是失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6970757/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com