Module: ActiveRecord::Postgres::Constraints
- Defined in:
- lib/active_record/postgres/constraints.rb,
lib/active_record/postgres/constraints/railtie.rb,
lib/active_record/postgres/constraints/version.rb,
lib/active_record/postgres/constraints/schema_dumper.rb,
lib/active_record/postgres/constraints/schema_creation.rb,
lib/active_record/postgres/constraints/command_recorder.rb,
lib/active_record/postgres/constraints/table_definition.rb,
lib/active_record/postgres/constraints/postgresql_adapter.rb
Defined Under Namespace
Modules: CommandRecorder, PostgreSQLAdapter, SchemaCreation, SchemaDumper, TableDefinition
Classes: Railtie
Constant Summary
collapse
- VERSION =
'0.1.2'
Class Method Summary
collapse
Class Method Details
.normalize_conditions(conditions) ⇒ Object
14
15
16
17
18
19
20
21
22
23
24
25
26
|
# File 'lib/active_record/postgres/constraints.rb', line 14
def normalize_conditions(conditions)
conditions = [conditions] unless conditions.is_a?(Array)
conditions = conditions.map do |condition|
if condition.is_a?(Hash)
normalize_conditions_hash(condition)
else
condition
end
end
return conditions.first if 1 == conditions.length
"(#{conditions.join(') AND (')})"
end
|
.normalize_conditions_hash(hash) ⇒ Object
28
29
30
31
32
33
34
|
# File 'lib/active_record/postgres/constraints.rb', line 28
def normalize_conditions_hash(hash)
hash = hash.reduce([]) do |array, (column, predicate)|
predicate = predicate.join("', '") if predicate.is_a?(Array)
array << "#{column} IN ('#{predicate}')"
end
"(#{hash.join(') AND (')})"
end
|
.to_sql(table, name_or_conditions, conditions = nil) ⇒ Object
36
37
38
39
40
41
42
43
44
45
|
# File 'lib/active_record/postgres/constraints.rb', line 36
def to_sql(table, name_or_conditions, conditions = nil)
if conditions
name = name_or_conditions
else
name = "#{table}_#{Time.zone.now.nsec}"
conditions = name_or_conditions
end
"CONSTRAINT #{name} CHECK (#{normalize_conditions(conditions)})"
end
|