Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <p>You could store your selection rule in a Hash and reuse the hash:</p> <pre><code>require 'sequel' DB = Sequel.sqlite selection = { a: 1, b: 2 } ds1 = DB[:x].where( selection ) selection[:a] = 5 #change data ds2a = ds1.unfiltered.filter(selection) # change selection ds2b = DB[:x].where( selection ) #Alternative usage puts ds1.sql #SELECT * FROM `x` WHERE ((`a` = 1) AND (`b` = 2)) puts ds2a.sql #SELECT * FROM `x` WHERE ((`a` = 5) AND (`b` = 2)) puts ds2b.sql #SELECT * FROM `x` WHERE ((`a` = 5) AND (`b` = 2)) </code></pre> <hr> <p>I found a possibility to modify a dataset with the new methods <code>filter_exchange</code> and <code>filter_exchange!</code>.</p> <pre><code>require 'sequel' DB = Sequel.sqlite module Sequel class Dataset def filter_exchange!( filter ) filter.each{|key, value| opts[:where].args.each{|arg| if arg.args.first == key arg.args.pop arg.args &lt;&lt; value end } } self end def filter_exchange( filter ) sel = self.unfiltered filter.each{|key, value| opts[:where].args.each{|arg| if arg.args.first == key sel = sel.filter(key =&gt; value) else sel = sel.filter(arg) end } } sel end end end ds1 = DB[:x].filter(a:1, b:2) puts ds1.sql #SELECT * FROM `x` WHERE ((`a` = 1) AND (`b` = 2)) puts ds1.filter_exchange( a: 7).sql #SELECT * FROM `x` WHERE ((`a` = 7) AND (`b` = 2) puts ds1.sql #SELECT * FROM `x` WHERE ((`a` = 1) AND (`b` = 2) puts ds1.filter_exchange!( a: 7).sql#SELECT * FROM `x` WHERE ((`a` = 7) AND (`b` = 2) puts ds1.sql #SELECT * FROM `x` WHERE ((`a` = 7) AND (`b` = 2) </code></pre> <p><code>filter_exchange!</code> modifies your original dataset command! Even a <code>ds.dup.filter_exchange!</code> will change your original selection.</p> <p>With <code>filter_exchange</code> you get a modified dataset. (Not very well tested up to now).</p>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. VO
      singulars
      1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload