ROR:验证模型文件中的非模型字段

时间:2014-05-15 02:21:16

标签: ruby-on-rails ruby

我的表单中有一些不属于模型的字段,我知道如何在控制器中验证这些字段,但我想知道是否可以在模型中验证这一点?

如果有可能,我将如何验证? e.g。

text_field(nil, :non_model_field)

2 个答案:

答案 0 :(得分:5)

试试这个:

在模型中放置虚拟属性。

class MyModel < ActiveRecord::Base

   attr_accessor :non_model_field
   validates :non_model_field, presence: true # or whatever other validations you want

end

答案 1 :(得分:2)

提到@wali Ali时,您需要使用attr_accessor方法使用虚拟属性来创建非持久数据

此方法的工作原理是创建相关的getter&amp;模型的setter方法,它基本上创建了一系列可以在模型对象上使用的属性。然后,您的模型可以验证这些属性,即使它们未被保存:

#app/models/model.rb
Class Model < ActiveRecord::Base
    attr_accessor :test, :attribute #-> creates @model.test & @model.attribute
    validates :test, :attribute, presence: true
end