Module: Sequel::Plugins::TstzmultirangeFields
- Defined in:
- lib/sequel/plugins/tstzmultirange_fields.rb
Defined Under Namespace
Modules: ClassMethods, DatasetMethods
Constant Summary
collapse
- VERSION =
SequelTstzrangeFields::VERSION
Class Method Summary
collapse
Class Method Details
.apply(_model, _opts = {}) ⇒ Object
37
38
39
|
# File 'lib/sequel/plugins/tstzmultirange_fields.rb', line 37
def self.apply(_model, _opts={})
Sequel.extension :pg_range_ops
end
|
41
42
43
44
45
46
47
48
49
50
51
|
# File 'lib/sequel/plugins/tstzmultirange_fields.rb', line 41
def self.configure(model, *args)
SequelTstzrangeFields::Helpers.check_schema_type_available(model.db, :tstzmultirange, :pg_multirange)
args << :periods if args.empty?
args = args.flatten
setup_model(model)
model.tstzrange_columns = args
model.tstzrange_columns.each do |column|
create_accessors(model, column)
end
end
|
.create_accessors(model, column) ⇒ Object
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
|
# File 'lib/sequel/plugins/tstzmultirange_fields.rb', line 57
def self.create_accessors(model, column)
get_column_method = column.to_sym
set_column_method = :"#{column}="
model.define_method(get_column_method) do
self[column]
end
model.define_method(set_column_method) do |values|
values = [values] unless values.respond_to?(:to_ary)
ranges = values.map { |v| self.class.value_to_tstzrange(v) }
multirange = Sequel.pg_multirange(ranges, :tstzmultirange)
self[column] = multirange
end
end
|
.setup_model(model) ⇒ Object