Module: CsvRecord::Associations

Defined in:
lib/csv_record/associations.rb

Instance Method Summary collapse

Instance Method Details

#belongs_to(klass) ⇒ Object



2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# File 'lib/csv_record/associations.rb', line 2

def belongs_to(klass)
  klass_name = klass.to_s

  self.class_eval do
    self.send :attr_writer, "#{klass}_id"

    define_method klass do
      klass_name.to_class.find self.id
    end
    define_method "#{klass}=" do |value|
      self.send "#{klass}_id=", value.to_param
    end
    define_method "#{klass}_id" do
      eval("@#{klass}_id").to_i
    end
  end
end

#has_many(klass) ⇒ Object



20
21
22
23
24
25
26
# File 'lib/csv_record/associations.rb', line 20

def has_many(klass)
  self.class_eval do
    define_method klass do
      klass.to_s.to_class.where :"#{self.underscored_class_name}_id" => self.id
    end
  end
end

#has_one(klass) ⇒ Object



28
29
30
31
32
33
34
35
36
37
38
# File 'lib/csv_record/associations.rb', line 28

def has_one(klass)
  self.class_eval do
    define_method "#{klass}=" do |obj|
      obj.send "#{self.underscored_class_name}_id=", self.id
      obj.save
    end
    define_method klass do
      klass.to_s.to_class.where("#{self.underscored_class_name}_id" => self.id).first
    end
  end
end