What is attr_accessor in Rails?
attr_accessor is used to define an attribute for object of Model which is not mapped with any column in database. This answers question - What is attr_accessor in Rails.
1. attr_accessor Methods
attr_accessor creates two methods i.e. getter method and setter method.
getter method - it is used to retrieve value of the attribute
setter method - it is used to set value to the attribute
When to use attr_accessor in Rails?
Whenever you want to show certain attribute for particular form but you do not want to store it's value in the database then you use attr_accessor for that model as follows,
Suppose we have a Model called user in out database with following fields,
id
name
age
city
profession
And we define attr_accessor :type_of_user as follows,
Class User < ActiveRecord::Base
attr_accessor :type_of_user
end
Now, whenever you create a object of the class User then you can assign a value to it's attr_accessor.
new_user = User.new(:name => 'Albert', :age => 23, :city => 'Ports S.')
This will create new object of class User and assign given attribute values. You can assign value to attr_accessor variable as follows,
new_user.type_of_user = 'middle-aged'
This assigns 'middle-aged' value to the attribute type_of_user attr_accessor.
getter and setter in Action
For attribute type_of_user getter and setter methods are created as follows,
# getter
def type_of_user
@type_of_user
end
# setter
def type_of_user=(val)
@type_of_user = val
end
And these are used whenever we assign or retrieve values from the attr_accessor.
2. Lifetime of attr_accessor
attr_accessor is accessible throughout object's lifecycle. When object is saved using any of ActiveRecord method, save, update etc. all attributes of Model other than attr_accessor are saved in the database.
How to Access
Throughout lifecycle of object, you can access the value of attribute accessor as follows,
new_user.type_of_user
and can be used for any operation as you do with normal attribute value.
Comments
Post a Comment