Ruby on rails Rails 2.3.8验证和#x27;无法从控制台工作(有效?始终返回true)
我最近将我的rails应用程序从rails 2.3.3升级到了2.3.8,并面临这样一个问题:所有模型验证在浏览器中都可以正常工作,但在使用控制台中的.valid?方法进行测试时完全被忽略。我所有的模特都是这样。 例如,我的公司型号有:Ruby on rails Rails 2.3.8验证和#x27;无法从控制台工作(有效?始终返回true),ruby-on-rails,validation,Ruby On Rails,Validation,我最近将我的rails应用程序从rails 2.3.3升级到了2.3.8,并面临这样一个问题:所有模型验证在浏览器中都可以正常工作,但在使用控制台中的.valid?方法进行测试时完全被忽略。我所有的模特都是这样。 例如,我的公司型号有: class Company < Content ... # Validation before_validation :ensure_token_existance validates_presence_of :name,
class Company < Content
...
# Validation
before_validation :ensure_token_existance
validates_presence_of :name,
:address,
:employee_count,
:category_ids,
:region_ids,
:phone,
:email,
:if => Proc.new { |company| company.step?(1) },
:message => "required field"
validates_presence_of :description,
:if => Proc.new { |company| company.step?(2) },
:message => "required field"
after_update :cache_sweeper
...
如果记录被删除,bang版本(例如保存!)会引发异常
无效的非bang版本没有:保存和更新_属性
返回false,创建并更新只返回对象
谁能帮我找出这里出了什么问题吗 您的验证取决于公司处于某一特定阶段。您从未在控制台中设置此属性。如果您尝试以下操作,会发生什么情况:
c = Company.new
c.step = 1
c.valid?
我只是猜测
step?
方法只是对属性step
执行一个相等性测试。如果没有,请尽一切努力使您的模型满足步骤?(1)
您的验证取决于处于特定步骤的公司。您从未在控制台中设置此属性。如果您尝试以下操作,会发生什么情况:
c = Company.new
c.step = 1
c.valid?
我只是猜测
step?
方法只是对属性step
执行一个相等性测试。如果没有,请尽一切努力使您的模型满足步骤?(1)
您的:If=>Proc.new{| company | company.step?(1)}
会导致问题吗?因为我没有看到你设置公司。进入控制台。因此,这可能会导致验证被忽略,因为它不在该步骤上。Thx@Koby,这确实导致了问题,感谢您的帮助。您的:if=>Proc.new{| company | company.step?(1)}
是否导致了问题?因为我没有看到你设置公司。进入控制台。因此,这可能会导致验证被忽略,因为它不在该步骤上。Thx@Koby,这确实导致了问题,感谢您的帮助非常感谢Derek,这确实解决了一个问题。似乎我花了太多时间将我的应用升级到2.3.8而错过了这个…非常感谢Derek,这真的解决了一个问题。似乎我花了太多时间将我的应用升级到2.3.8而错过了这个。。。
c = Company.new
c.step = 1
c.valid?