I'm currently trying to validate fields without having an ActiveRecord::Base
inheritance.
My model stores the data on a cache server so I do not need ActiveRecord.
Anyway, I would like to validate the fields of the model like I would if I was using ActiveRecord (e.g validates_numericality_of :quantity, :greater_than => 0
) ?
How can I do that?
Thank you very much for your help.
The purpose of this distinction is that with save! , you are able to catch errors in your controller using the standard ruby facilities for doing so, while save enables you to do the same using standard if-clauses.
Active Record is the M in MVC - the model - which is the layer of the system responsible for representing business data and logic. Active Record facilitates the creation and use of business objects whose data requires persistent storage to a database.
In Rails 3, Active Model contains the non-database functionality of Active Record.
Basically, you need to include ActiveModel::Validations
, define your fields as attr_accessor
, use an initialize
method to initialize the attributes and make them non-persisted as your model isn’t persisted to a database.
This way you can have validations on the tableless model and your controller the same as if you were using Active Record. There's also a Railscast on this http://railscasts.com/episodes/219-active-model.
Check out our Veto gem instead if you're looking for a standalone validations for ruby objects. It's lightweight, and has no dependencies.. ActiveModel might be overkill.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With