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
www.lab2023.com

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

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs