class Shiftable::ShiftingPolymorphicRelation

Gets data to be shifted

Public Instance Methods

each(&block) click to toggle source
# File lib/shiftable/shifting_polymorphic_relation.rb, line 20
def each(&block)
  result.each(&block)
end
found?() click to toggle source
# File lib/shiftable/shifting_polymorphic_relation.rb, line 16
def found?
  result.any?
end
polymorphic_id_column() click to toggle source
# File lib/shiftable/shifting_polymorphic_relation.rb, line 8
def polymorphic_id_column
  column[:id_column]
end
polymorphic_type_column() click to toggle source
# File lib/shiftable/shifting_polymorphic_relation.rb, line 12
def polymorphic_type_column
  "#{column[:as]}_type"
end
shift() { || ... } click to toggle source

@return result (once it is shifted)

# File lib/shiftable/shifting_polymorphic_relation.rb, line 25
def shift
  return false unless found?

  each do |record|
    record.send("#{polymorphic_id_column}=", to.id)
  end
  @run_save = yield if block_given?
  return result unless run_save

  run_save!
  result
end

Private Instance Methods

query() click to toggle source
# File lib/shiftable/shifting_polymorphic_relation.rb, line 40
def query
  base.where(
    polymorphic_type_column => column[:type],
    polymorphic_id_column => from.id
  )
end