我的表单中有一些不属于模型的字段,我知道如何在控制器中验证这些字段,但我想知道是否可以在模型中验证这一点?
如果有可能,我将如何验证? e.g。
text_field(nil, :non_model_field)
答案 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