attrs[:subject] end def subject=(value) unless value raise ArgumentError, "No subject given" end value = value.to_s if value.length < 3 raise ArgumentError, "Invalid subject" end @subject = value end end attr_accessor •Doesn't always do the job •No conversion •No validation •No support for default values •No support for not-nil constraint •Results in tedious work you have to do OVER AND OVER again