module CsvRecord::Associations

Public Instance Methods

belongs_to(klass) click to toggle source
# 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) click to toggle source
# 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) click to toggle source
# 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