active record accessor best practices?

Within an ActiveRecord sub-class I have seen several ways that people access the model attributes. As I have wandered through various blogs, my code now uses several different methods and I'm planning on making my code consistent but I'm curious what the "best way" is. :slight_smile:

If I have a 'name' attribute on a model there are at least 4 different ways to get it from within the class (@name is not one of them) and at least 3 ways to set it. (i suspect there are more but these are what I am using.)

Example... class CreateAttributes < ActiveRecord::Migration   def self.up     create_table :attributes do |t|         t.column :name, :string       t.timestamps     end   end

  def self.down     drop_table :attributes   end end

class Attribute < ActiveRecord::Base   ########## Getters ############   def name_by_self_dot     self.name or 'unlisted'   end   def name_by_self_bracket     self[:name] or 'unlisted'   end

  def name_by_read_attribute     read_attribute(:name) or 'unlisted'   end

  def name_by_name     name or 'unlisted' # I assume this is just calling the name method   end

  ########## Setters ############   def name_by_self_dot=(txt)     self.name = txt   end   def name_by_self_bracket=(txt)     self[:name] = txt   end

  def name_by_write_attribute=(txt)     write_attribute(:name, txt)   end

  def name_by_name=(txt)     name=txt # THIS DOES NOT WORK. I guess it creates a local variable instead of calling the setter.   end end

Anyway. Which one is best? I personally like the self.attribute way as it is short and it also works the same if you have an instance variable you defined with attr_accessor. Any thoughts?

Tony