diff options
author | José Valim <jose.valim@gmail.com> | 2012-03-03 07:12:13 -0800 |
---|---|---|
committer | José Valim <jose.valim@gmail.com> | 2012-03-03 07:12:13 -0800 |
commit | aacd41d2506864f76ff9a4073a33777fced6387c (patch) | |
tree | 335ca7a33b6c58f82b441f48d077ce5e45998ece /activemodel/lib | |
parent | eafa58b566c770d5d5dc5706464ab4b67e453464 (diff) | |
parent | cb9d03f0d46b17986894a3aadaad6eaa55dc66b3 (diff) | |
download | rails-aacd41d2506864f76ff9a4073a33777fced6387c.tar.gz rails-aacd41d2506864f76ff9a4073a33777fced6387c.tar.bz2 rails-aacd41d2506864f76ff9a4073a33777fced6387c.zip |
Merge pull request #5256 from carlosantoniodasilva/active-model-model
Add docs with usage examples for ActiveModel::Model
Diffstat (limited to 'activemodel/lib')
-rw-r--r-- | activemodel/lib/active_model/model.rb | 56 |
1 files changed, 55 insertions, 1 deletions
diff --git a/activemodel/lib/active_model/model.rb b/activemodel/lib/active_model/model.rb index 9228d54015..811332163b 100644 --- a/activemodel/lib/active_model/model.rb +++ b/activemodel/lib/active_model/model.rb @@ -1,4 +1,58 @@ module ActiveModel + + # == Active Model Basic Model + # + # Includes the required interface for an object to interact with +ActionPack+, + # using different +ActiveModel+ modules. It includes model name instrospection, + # conversions, translations and validations . Besides that, it allows you to + # initialize the object with a hash of attributes, pretty much like + # +ActiveRecord+ does. + # + # A minimal implementation could be: + # + # class Person + # include ActiveModel::Model + # attr_accessor :name, :age + # end + # + # person = Person.new(:name => 'bob', :age => '18') + # person.name # => 'bob' + # person.age # => 18 + # + # Note that, by default, +ActiveModel::Model+ implements +persisted?+ to + # return +false+, which is the most common case. You may want to override it + # in your class to simulate a different scenario: + # + # class Person + # include ActiveModel::Model + # attr_accessor :id, :name + # + # def persisted? + # self.id == 1 + # end + # end + # + # person = Person.new(:id => 1, :name => 'bob') + # person.persisted? # => true + # + # Also, if for some reason you need to run code on +initialize+, make sure you + # call super if you want the attributes hash initialization to happen. + # + # class Person + # include ActiveModel::Model + # attr_accessor :id, :name, :omg + # + # def initialize(attributes) + # super + # @omg ||= true + # end + # end + # + # person = Person.new(:id => 1, :name => 'bob') + # person.omg # => true + # + # For more detailed information on other functionality available, please refer + # to the specific modules included in +ActiveModel::Model+ (see below). module Model def self.included(base) base.class_eval do @@ -11,7 +65,7 @@ module ActiveModel def initialize(params={}) params.each do |attr, value| - self.send(:"#{attr}=", value) + self.send("#{attr}=", value) end if params end |