Module: DynamicMigrations::ActiveRecord::Migrators::Validation
- Included in:
- DynamicMigrations::ActiveRecord::Migrators
- Defined in:
- lib/dynamic_migrations/active_record/migrators/validation.rb
Instance Method Summary collapse
-
#add_validation(table_name, name:, comment: nil, &block) ⇒ Object
this exists because because the standard rails migration does not support deffered constraints.
- #remove_validation(table_name, name) ⇒ Object
-
#remove_validation_comment(table_name, validation_name) ⇒ Object
remove a validation comment.
-
#set_validation_comment(table_name, validation_name, comment) ⇒ Object
add a comment to the validation.
Instance Method Details
#add_validation(table_name, name:, comment: nil, &block) ⇒ Object
this exists because because the standard rails migration does not support deffered constraints
6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
# File 'lib/dynamic_migrations/active_record/migrators/validation.rb', line 6 def add_validation table_name, name:, comment: nil, &block unless block raise MissingFunctionBlockError, "create_function requires a block" end # todo - remove this once steep/rbs can better handle blocks unless block.is_a? NilClass sql = block.call.strip end execute <<~SQL ALTER TABLE #{table_name} ADD CONSTRAINT #{name} CHECK (#{sql}); SQL if comment.is_a? String set_validation_comment table_name, name, comment end end |
#remove_validation(table_name, name) ⇒ Object
26 27 28 29 30 31 |
# File 'lib/dynamic_migrations/active_record/migrators/validation.rb', line 26 def remove_validation table_name, name execute <<~SQL ALTER TABLE #{table_name} DROP CONSTRAINT #{name}; SQL end |
#remove_validation_comment(table_name, validation_name) ⇒ Object
remove a validation comment
41 42 43 44 45 |
# File 'lib/dynamic_migrations/active_record/migrators/validation.rb', line 41 def remove_validation_comment table_name, validation_name execute <<~SQL COMMENT ON CONSTRAINT #{validation_name} ON #{schema_name}.#{table_name} IS NULL; SQL end |
#set_validation_comment(table_name, validation_name, comment) ⇒ Object
add a comment to the validation
34 35 36 37 38 |
# File 'lib/dynamic_migrations/active_record/migrators/validation.rb', line 34 def set_validation_comment table_name, validation_name, comment execute <<~SQL COMMENT ON CONSTRAINT #{validation_name} ON #{schema_name}.#{table_name} IS #{quote comment}; SQL end |