Class: Populator::Record
- Inherits:
-
Object
- Object
- Populator::Record
- Defined in:
- lib/populator/record.rb
Overview
This is what is passed to the block when calling populate.
Instance Attribute Summary collapse
-
#attributes ⇒ Object
Returns the value of attribute attributes.
Instance Method Summary collapse
-
#attribute_values ⇒ Object
Return values for all columns inside an array.
-
#id ⇒ Object
override id since method_missing won’t catch this column name.
-
#initialize(model_class, id) ⇒ Record
constructor
Creates a new instance of Record.
-
#type ⇒ Object
override type since method_missing won’t catch this column name.
Constructor Details
#initialize(model_class, id) ⇒ Record
Creates a new instance of Record. Some attributes are set by default:
-
id
- defaults to id passed -
created_at
- defaults to current time -
updated_at
- defaults to current time -
created_on
- defaults to current date -
updated_on
- defaults to current date -
type
- defaults to class name (for STI)
14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
# File 'lib/populator/record.rb', line 14 def initialize(model_class, id) @attributes = { model_class.primary_key.to_sym => id } @columns = model_class.column_names @columns.each do |column| case column when 'created_at', 'updated_at' @attributes[column.to_sym] = Time.now when 'created_on', 'updated_on' @attributes[column.to_sym] = Date.today when model_class.inheritance_column @attributes[column.to_sym] = model_class.to_s end end end |
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(sym, *args, &block) ⇒ Object (private)
55 56 57 58 59 60 61 62 63 64 65 66 |
# File 'lib/populator/record.rb', line 55 def method_missing(sym, *args, &block) name = sym.to_s if @columns.include?(name.sub('=', '')) if name.include? '=' @attributes[name.sub('=', '').to_sym] = Populator.interpret_value(args.first) else @attributes[sym] end else super end end |
Instance Attribute Details
#attributes ⇒ Object
Returns the value of attribute attributes.
4 5 6 |
# File 'lib/populator/record.rb', line 4 def attributes @attributes end |
Instance Method Details
#attribute_values ⇒ Object
Return values for all columns inside an array.
40 41 42 43 44 |
# File 'lib/populator/record.rb', line 40 def attribute_values @columns.map do |column| @attributes[column.to_sym] end end |
#id ⇒ Object
override id since method_missing won’t catch this column name
30 31 32 |
# File 'lib/populator/record.rb', line 30 def id @attributes[:id] end |
#type ⇒ Object
override type since method_missing won’t catch this column name
35 36 37 |
# File 'lib/populator/record.rb', line 35 def type @attributes[:type] end |