gpt4 book ai didi

ruby-on-rails-3 - validates_inclusion_of Rails 3 查询未按预期工作

转载 作者:行者123 更新时间:2023-12-04 06:52:08 25 4
gpt4 key购买 nike

我是 Rails 的新手,我正面临一个问题。我有

模型

Model1
id: integer
account_id: integer

Account
id: integer

我在 Model1 中有如下验证,

模型代码:

validates :account_id, :inclusion => { :in => Account.find(:all).collect(&:id)}

我使用下拉菜单查看代码:

<%= f.select :account_id, @accounts.collect {|acc| [acc.name, acc.id]}, {:prompt => 'Select Account' }, { :selected => @defaultaccount, :class => 'selectwidth' } %>

我在提交表单之前使用客户端验证来验证字段。我正在使用 Heroku 来部署我的应用程序。

我先创建一个帐户,然后尝试从表单创建一个新模型 1。下拉列表中包含我拥有的所有帐户。然后我从下拉列表中选择一个我创建的帐户,客户端验证生效并显示“无效”,这是 validates_inclusion_of 的错误消息,就好像该帐户从未存在过一样。不确定发生了什么,我检查了数据库并创建了帐户,这就是下拉列表首先加载帐户的原因。

我将 validates_inclusion_of 更改为 Rails 3 validates :account_id, :inclusion => { :in => {} } 语法并重新部署。现在我尝试在新的 model1 表单中选择该帐户,下拉列表不会显示先前创建的帐户的错误。

然后我创建了一个新帐户并尝试为新帐户创建一个新的 model1,但验证失败再次出现。

所以这像是一个缓存问题?这是客户端验证问题吗?我已尽我所能尝试找出问题所在,但我对正在发生的事情一无所知。

所以每次我创建一个帐户时,它都希望我重新部署,这会破坏应用程序的功能。我该如何摆脱这个问题?不太确定发生了什么。

配置,轨道 3部署在 Heroku使用 Assets 管道

gem :客户端验证雷成

最佳答案

它没有像你想要的那样工作,因为 :in => Account.find(:all).collect(&:id) 它只在生产模式下评估一次,当 Rails 加载类时.我承认我不明白这种验证背后的原因。无论如何,你必须使用 custom validator如果您真的想实现这一目标。

关于ruby-on-rails-3 - validates_inclusion_of Rails 3 查询未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10153027/

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