class Parse::Relation

Public Class Methods

new(parent, column_name, hash) click to toggle source
# File lib/parse/relation.rb, line 4
def initialize parent, column_name, hash
  @parent_object = parent
  @column_name = column_name
  @raw_hash = hash
  @added_pointers = []
  @removed_pointers = []
end

Public Instance Methods

add(item) click to toggle source
# File lib/parse/relation.rb, line 12
def add item
  unless @removed_pointers.empty?
    raise ArgumentError.new('Please save for removed items before adding')
  end
  item = item.pointer if item.is_a?(Parse::Object)
  @added_pointers.push item
end
changed?() click to toggle source
# File lib/parse/relation.rb, line 53
def changed?
  (@added_pointers.size + @removed_pointers.size) != 0
end
load(parse_client=Parse::Client.default) click to toggle source
# File lib/parse/relation.rb, line 28
def load parse_client=Parse::Client.default
  unless @objects
    pointer = @parent_object.pointer
    key = @column_name
    related_class = Parse::Object @raw_hash['className']
    @objects = related_class.find :where => proc {
      related_to key, pointer
    }
  end
  @objects
end
load!(parse_client=Parse::Client.default) click to toggle source

TODO should be refactored

# File lib/parse/relation.rb, line 41
def load! parse_client=Parse::Client.default
  unless @objects
    pointer = @parent_object.pointer
    key = @column_name
    related_class = Parse::Object @raw_hash['className']
    @objects = related_class.find! :where => proc {
      related_to key, pointer
    }
  end
  @objects
end
remove(item) click to toggle source
# File lib/parse/relation.rb, line 20
def remove item
  unless @added_pointers.empty?
    raise ArgumentError.new('Please save for added items before removing')
  end
  item = item.pointer if item.is_a?(Parse::Object)
  @removed_pointers.push item
end
to_h() click to toggle source
# File lib/parse/relation.rb, line 57
def to_h
  if not @added_pointers.empty?
    {
      "__op" => "AddRelation",
      "objects" => @added_pointers.map(&:to_h)
    }
  elsif not @removed_pointers.empty?
    {
      "__op" => "RemoveRelation",
      "objects" => @removed_pointers.map(&:to_h)
    }
  else
    {
      "__op" => "AddRelation",
      "objects" => [nil]
    }
  end
end
to_json(*args) click to toggle source
# File lib/parse/relation.rb, line 76
def to_json *args
  to_h.to_json
end