22

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?

halfer
  • 19,824
  • 17
  • 99
  • 186
Nicolas Guillaume
  • 8,160
  • 6
  • 35
  • 44

2 Answers2

33

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.

prasvin
  • 3,009
  • 23
  • 28
  • [For Rails 4+ follow this SO question](https://stackoverflow.com/questions/16865821/rails-4-validate-model-without-a-database) – notapatch Jun 12 '21 at 10:59
1

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.

Erik Lott
  • 697
  • 1
  • 9
  • 17