Sha256: c30c7155be9007b1f55971d4eba20ea955782a0b3b4a44a95e29a9aec8f07be6
Contents?: true
Size: 952 Bytes
Versions: 1
Compression:
Stored size: 952 Bytes
Contents
module CompositePrimaryKeys ID_SEP = ',' ID_SET_SEP = ';' module ArrayExtension def to_composite_keys CompositeKeys.new(self) end end def self.normalize(ids) ids.map do |id| if id.is_a?(Array) normalize(id) elsif id.is_a?(String) && id.index(ID_SEP) id.split(ID_SEP) else id end end end class CompositeKeys < Array def self.parse(value) case value when Array value.to_composite_keys when String self.new(value.split(ID_SEP)) else raise(ArgumentError, "Unsupported type: #{value}") end end def in(other) case other when Arel::SelectManager Arel::Nodes::In.new(self, other.ast) end end def to_s # Doing this makes it easier to parse Base#[](attr_name) join(ID_SEP) end end end Array.send(:include, CompositePrimaryKeys::ArrayExtension)
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
composite_primary_keys-11.0.0.rc2 | lib/composite_primary_keys/composite_arrays.rb |