module Sinja::Sequel::Resource

Public Instance Methods

has_many(rel, try_convert=:to_i, &block) click to toggle source
Calls superclass method
# File lib/sinja/sequel.rb, line 78
def has_many(rel, try_convert=:to_i, &block)
  super(rel) do
    fetch do
      resource.send("#{rel}_dataset")
    end

    clear(:sideload_on=>:update) do
      resource.send("remove_all_#{rel}")
    end

    replace(:sideload_on=>:update) do |rios|
      add_remove(rel, rios, try_convert)
    end

    merge(:sideload_on=>:create) do |rios|
      add_missing(rel, rios, try_convert)
    end

    subtract do |rios|
      remove_present(rel, rios, try_convert)
    end

    instance_eval(&block) if block
  end
end
has_one(rel, try_convert=:to_i, &block) click to toggle source
Calls superclass method
# File lib/sinja/sequel.rb, line 57
def has_one(rel, try_convert=:to_i, &block)
  super(rel) do
    pluck do
      resource.send(rel)
    end

    prune(:sideload_on=>:update) do
      resource.send("#{rel}=", nil)
      resource.save_changes(:validate=>!sideloaded?)
    end

    graft(:sideload_on=>%i[create update]) do |rio|
      klass = resource.class.association_reflection(rel).associated_class
      resource.send("#{rel}=", klass.with_pk!(proc(&try_convert).(rio[:id])))
      resource.save_changes(:validate=>!sideloaded?)
    end

    instance_eval(&block) if block
  end
end