I want to learn that there is a native way make building normal and mandatory belongs_to associations. Let give a simple example, I have two models, first one is Tenant, second is User. User belongs to Tenant which mean there is a User.tenant_id. I can create, save or update User Model without User.tenant_id . I named this is normal belongs_to . What i want is User model can’t update or save if tenant_id = nil.
I see that rails doesn’t add foreign key at DB layer. There are several gems for this issue. But i can’t understand why we don’t add foreign key. Why this is a good idea? Is it over performance or portability?
I want to learn that there is a native way make building normal and
mandatory belongs_to associations. Let give a simple example, I have two
models, first one is Tenant, second is User. User belongs to Tenant which
mean there is a User.tenant_id. I can create, save or update User Model
without User.tenant_id . I named this is normal belongs_to . What i want is
User model can't update or save if tenant_id = nil.
When you add the column, make it a not null column.
*
I see that rails doesn't add foreign key at DB layer. There are several
gems for this issue. But i can't understand why we don't add foreign key.
Why this is a good idea? Is it over performance or portability?
There is a school of thought that says that the database shouldn't
have any application/business logic. Personally I always use foreign
keys, unique indexes etc - only the database itself can give me a cast
iron guarantee for those things - rails validations are subject to
race conditions in some cases (and of course don't help you if you
ever manipulate data outside of rails)