Module: Sinja::Sequel::Resource
- Defined in:
- lib/sinja/sequel.rb
Instance Method Summary collapse
- #has_many(rel, try_convert = :to_i, &block) ⇒ Object
- #has_one(rel, try_convert = :to_i, &block) ⇒ Object
Instance Method Details
#has_many(rel, try_convert = :to_i, &block) ⇒ Object
78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 |
# 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) ⇒ Object
57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 |
# 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 |