簡體   English   中英

Ruby On Rails腳手架需要包含外鍵嗎?

[英]Ruby On Rails scaffold need to include foreign keys?

我正在學習軌道上的ruby的基礎知識,我想做一些簡單的查詢,但我有一個疑問:

我會有這些模型:

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

現在,我將使用scaffold生成所有的東西,我想知道是否必須直接將外鍵放在腳手架中,如:

rails generate scaffold Adress street:string number:integer client_id:integer

或者,當我創建這些關聯然后遷移我的數據庫時,它們將是隱含的?

我不知道我是否以最好的方式解釋自己。

謝謝

是的,沒有參考。 您需要傳遞client_id或對Client模型的引用,例如:

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

要么

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

要么,在rails 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屬性創建為數據庫表中的索引列。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM