If you want to create an ActiveRecord model without any table reference, and want to add validation for that model means, you can go with this example code.
In app/models/base_model.rb
class BaseModel < ActiveRecord::Base
def self.columns
@columns ||= [];
enddef self.column(name, sql_type = nil, default = nil, null = true)
columns << ActiveRecord::ConnectionAdapters::Column.new(name.to_s, default,
sql_type.to_s, null)
end# Override the save method to prevent exceptions.
def save(validate = true)
validate ? valid? : true
end
end
In app/models/post.rb
class Article < BaseModel
column :title, :string
validates_presence_of :title
end
In script/console
Loading development environment (Rails 2.2.2)
>> article = Article.new
=> #<Article title: nil>
>> article.valid?
=> false
>> article.errors
=> #<ActiveRecord::Errors:0x235b270 @errors={“title”=>[“can’t be blank”]}, @base=#<Article title: nil>>
Reference Links:
http://stackoverflow.com/questions/315850/rails-model-without-database/
http://railscasts.com/episodes/193-tableless-model
http://agilewebdevelopment.com/plugins/activerecord_base_without_table