Comments (4)
Hey @volkanunsal, thanks for the proposal 👍 Can you add an example of a migration that should raise an error, and as well as one that does it properly?
from strong_migrations.
I don't quite know how to express the correct way of doing it. The way to alter a constraint requires knowing the name of the constraint, but that name is generated by Rails, and not easily accessible to the programmer.
Here is an attempt to show what I mean:
wrong
class AddReferenceToProject < ActiveRecord::Migration[5.1]
def change
add_foreign_key :users, :projects
end
end
right
class AddReferenceToProject < ActiveRecord::Migration[5.1]
def change
# Naming our own foreign key. Is there a better way?
add_foreign_key :users, :projects, name: 'foobar'
execute("ALTER TABLE users ALTER CONSTRAINT foobar DEFERRABLE INITIALLY IMMEDIATE;")
end
end
from strong_migrations.
Hey @volkanunsal, thanks for following up. I don't know if this practice is common, so don't think it makes sense to add right now. I'd like to add support for custom rules at some point, which could allow you to create your own warning around this.
from strong_migrations.
fwiw, just added a way to write custom checks
from strong_migrations.
Related Issues (20)
- lock_timeout + lock_timeout_retries + concurrent postgres indexes HOT 2
- safety_assured not ignoring custom checks when safe_by_default is true HOT 1
- [Idea] Checks for dangerous attributes HOT 1
- add_reference + index +disable_ddl_transaction! is an unsafe pattern? HOT 1
- [Idea] Apply `safety_assured` through `revert` HOT 2
- `StrongMigration.start_after` doesn't respect version on `revert` HOT 1
- Adding a column with a default value should is safe when use mysql(5.7) as database HOT 5
- [Idea] Show check link with error message HOT 1
- Lock timeout when using `add_column` with `enum` type HOT 2
- `add_reference` with concurrent index can be dangerous HOT 2
- [Idea] Provide custom message prefix/suffix message HOT 2
- [Idea] Should add_unique_constraint be considered unsafe? HOT 3
- `StrongMigrations.start_after` does not work HOT 1
- Consider appending to ignored_columns as a best practice HOT 1
- [Idea] Ignore migrations from non-supported adapters HOT 3
- [Idea] safety_assured should require justification HOT 1
- [Idea] Adding auto incrementing primary key does not guarantee that replicas generate the same primary key values (MySQL) HOT 4
- Getting an error complaining about MariaDB Version HOT 3
- [Idea] Add these changes as default in Rails HOT 1
- [Idea] Support custom checks on TableDefinition methods
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from strong_migrations.