module RelationBuilder::ClassMethods

Public Instance Methods

add_relation_definition(name, klass) click to toggle source
# File lib/redisant/relation_builder.rb, line 29
def add_relation_definition name, klass
  raise Redisant::InvalidArgument.new("Relation #{name} already exists") if relation_definitions[name.to_s]
  relation_definitions[name.to_s] = klass
end
belongs_to(name) click to toggle source
# File lib/redisant/relation_builder.rb, line 41
def belongs_to name
  add_relation_definition name, BelongsTo
  send :define_method, name do
    relation = find_relation(name) { BelongsTo.new(name, self) }
    relation.owner
  end
  send :define_method, "#{name}=" do |item, reprocitate=true|
    relation = find_relation(name) { BelongsTo.new( name, self ) }
    relation.set_owner item, reprocitate
  end

end
has_many(name) click to toggle source
# File lib/redisant/relation_builder.rb, line 34
def has_many name
  add_relation_definition name, HasMany
  send :define_method, name do
    relation = find_relation(name) { HasMany.new(name, self) }
  end
end
relation_definitions() click to toggle source
# File lib/redisant/relation_builder.rb, line 25
def relation_definitions
  @relation_definitions ||= {}
end