Using model classes local to the migration is a technique that allows accessing the underlying tables through AR without a dependency of the app models being available across time. This is supported by rails that explicitly sets the table_name_prefix of migration classes to be an empty string.
In this specific case, for example, SpreePayment.table_name will be spree_payments, which is the same as Spree::Payment.table_name.
If Spree::Payment will change name and become, say, Solidus::Payment, this migration won't break a sweat and will keep working.
This way any change in table names or prefixes, or even removing a model altogether won't affect older migrations.
Summary
Using model classes local to the migration is a technique that allows accessing the underlying tables through AR without a dependency of the app models being available across time. This is supported by rails that explicitly sets the table_name_prefix of migration classes to be an empty string.
In this specific case, for example,
SpreePayment.table_name
will bespree_payments
, which is the same asSpree::Payment.table_name
.If Spree::Payment will change name and become, say, Solidus::Payment, this migration won't break a sweat and will keep working.
This way any change in table names or prefixes, or even removing a model altogether won't affect older migrations.
Manual check log
Checklist
Check out our PR guidelines for more details.
The following are mandatory for all PRs:
The following are not always needed (~cross them out~ if they are not):