class BelongsTo
Public Class Methods
new(name, object)
click to toggle source
Calls superclass method
Relation::new
# File lib/redisant/relations.rb, line 17 def initialize name, object super name, object @reverse_name = Inflector.pluralize @object.class.name.downcase end
Public Instance Methods
destroy()
click to toggle source
# File lib/redisant/relations.rb, line 22 def destroy set_owner nil, true end
owner()
click to toggle source
# File lib/redisant/relations.rb, line 37 def owner @owner ||= @class.find(owner_id) if owner_id end
owner_id()
click to toggle source
query
# File lib/redisant/relations.rb, line 33 def owner_id @owner_id ||= $redis.get redis_key end
redis_key()
click to toggle source
keys
# File lib/redisant/relations.rb, line 27 def redis_key raise Redisant::InvalidArgument.new('Cannot make key without id') unless @object && @object.id "#{@object.class_name}:#{@object.id}:belongs_to:#{@name}" end
set_owner(item, reprocitate=true)
click to toggle source
# File lib/redisant/relations.rb, line 41 def set_owner item, reprocitate=true if owner if owner.respond_to? @reverse_name owner.send(@reverse_name).remove @object, false if reprocitate end end if item raise Redisant::InvalidArgument.new('Wrong object type') unless item.class_name == @name raise Redisant::InvalidArgument.new('Missing id') unless item.id $redis.set redis_key, item.id @owner = item @owner_id = item.id if owner.respond_to? @reverse_name owner.send(@reverse_name).add @object, false if reprocitate end else $redis.del redis_key @owner_id = nil @owner = nil end end