3

Я изучаю основы рубин на рельсах, и я хочу сделать несколько простых запросов, но у меня есть сомнения:Ruby On Rails эшафот должен включать внешние ключи?

я эти модели:

class Client < ActiveRecord::Base 
    has_one :address 
    has_many :orders 
    has_and_belongs_to_many :roles 
end 

class Address < ActiveRecord::Base 
    belongs_to :client 
end 

class Order < ActiveRecord::Base 
    belongs_to :client, counter_cache: true 
end 

class Role < ActiveRecord::Base 
    has_and_belongs_to_many :clients 
end 

Теперь, я буду использовать леску, чтобы генерировать все вещи, и я хочу знать, если я должен сразу поставить внешние ключи в scaffols, как:

рельсов генерировать эшафот Адрес улицы: номер строки: целое client_id: целое

Или когда я делаю эти ассоциации, а затем мигрирую свой db, они будут неявными?

Я не знаю, объясню ли я себя наилучшим образом.

Thanks

+1

Да, сначала вы должны генерировать родительскую модель помоста после того, что вы можете создать дочернюю леску и указать на внешнем, как выше – Veeru

+1

рельсы г подмостей клиента CLIENT_NAME: строка рельсы г эшафот адрес client_id: целое Адрес1: строка как это – Veeru

+0

Итак, если я произвожу: ** Адреса улицы: строка номер: Integer ** Он никогда не будет связан с любым клиентом, даже если я писал: ** belongs_to: клиент ** в клиенте модели Правильно? –

ответ

7

Да, нет ссылки. Вам нужно либо передать client_id или ссылку на модель клиента, например:

rails generate scaffold Address street:string number:integer client_id:integer:index 

или

rails generate scaffold Address street:string number:integer client:references 
0

Либо, в рельсами 4 вы можете использовать belongs_to таким образом:

Предположим что у вас есть модель пользователя в вашей заявке

rails g scaffold comment belongs_to:user text:string 

он генерирует этот класс в папку MIGRATE:

class CreateComments < ActiveRecord::Migration 
    def change 
    create_table :comments do |t| 
     t.string :text 
     t.belongs_to :user, index: true, foreign_key: true 
     t.timestamps null: false 
    end 
    end 
end 

вы должны выполнить rake db:migrate тогда, эта команда создания user_id свойства как столбец в таблице базы данных.