Rails - 模型验证不适用于mysql insert / update命令

时间:2013-11-05 13:58:32

标签: mysql ruby-on-rails validation

对于reason,我使用了mysql cmd

insert into table_name (....)
update custom_reports ...

因此我错过了Model validations

validates_uniqueness_of :name
validates_presence_of :name, :description
  

如何以rails方式验证?或者,使用mysql方式验证(也需要这种方式的帮助)?

3 个答案:

答案 0 :(得分:1)

如果只执行自定义SQL命令,则Rails验证和其他ActiveRecordActiveModel魔法不起作用。然后,您的模型类都不会被实例化。

答案 1 :(得分:0)

对于Mysql(或任何类似DB的sql),您可以将列属性修改为:

我知道使用OCI8执行上述操作并且oracle会导致异常,我猜测应该与ActiveRecord和Mysql相同,所以你应该正确处理你的异常

但正如@Marek所说,你应该依靠Active记录并做一些像

这样的事情

Model.create()
OR model_instance.save()

答案 2 :(得分:0)

如果要查找(并且可能处理)数据库中无效的条目,请在rails控制台中尝试以下操作:

ModelName.find_each do |item|
  unless item.valid?
    puts "Item ##{item.id} is invalid"
    # code to fix the problem... 
  end
end

valid?再次运行Validations,但不会更改数据。