Belongs_to :model validation with mandatory foreign keys and foreign key at DB layer

Hi Folks,

First Question

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.

What is the best solution for this problem.

My schema is
https://github.com/kebab-project/server-ror/blob/master/db/schema.rb
My models are
https://github.com/kebab-project/server-ror/tree/master/app/models
My migrations are
https://github.com/kebab-project/server-ror/tree/master/db/migrate

*Note : *User Model extends from TenantScope model!

Second Question
*
*
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?

Best Regards.

Onur zgr ZKAN
**lab2023 - internet teknolojileri

Adres: Pamukkale Teknoloji Gelitirme Blgesi
dari Bina B-Blok Z13 Knkl / Denizli / TRKYE
Telefon: +90 258 215 50 10 - E-posta: [email protected]

2011/11/11 Onur zgr ZKAN [email protected]:

Hi Folks,
First Question

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.

Use a validation in the User model. See the Rails Guide on Active
Record Validations and Callbacks.

Colin

On Nov 11, 10:25am, Onur zgr ZKAN [email protected]
wrote:

Hi Folks,

First Question

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)

Fred