外部キーを使用して移行を実行または生成するにはどうすればよいですか? 私はmunicipios
テーブルを持っており、テーブルに関連付けたいと思っていますciudades
。テーブルには次のフィールドがあります: nombre_id
(name id)、nombre
(name)、departamento
(department) この場合、scaffold スクリプトを実行して外部キーの移行を生成するにはどうすればよいですか?
2 に答える
移行ファイルを作成する場合、コマンドは次のとおりです。
rails generate migration NAME [field:type field:type] [options]
またはショートカット
rails g migration NAME [field:type field:type] [options]
しかし、他のモデルを参照するモデルから足場を作成したい場合。たぶん、あなたはこのようにすることができます
足場でciudadesモデルを作成する
rails g scaffold ciudades nombre_id:integer nombre:integer departamento:string
ciudades を参照する municipios モデルを作成する
rails g scaffold municipios ciudades:references
これにより、municipios テーブルに属性 ciudades_id が作成されます。移行は次のようになります。
class CreateMunicipios < ActiveRecord::Migration
def self.up
create_table :municipios do |t|
t.references :ciudades
t.timestamps
end
end
def self.down
drop_table :municipios
end
end
また、自治体モデルでもbelongs_to
関係が作成されます。
cuidades
しかし、これはモデルを更新しません。関係を指定する必要があります。
また、Rails はモデルに id フィールドを自動的に作成することにも注意してください。それはコンベンションです。nombre_id が主キーであることを意味する場合は、自分で指定する必要があります。
この助けを願っています
Scaffold は関係を作成しません。ビュー、コントローラーなどを作成しますが、残り (関係) は手動でコーディングする必要があります。
したがって、「municipios」を足場にしますが、municipio に多くの ciudades が必要な場合は、自分で行う必要があります。例えば:
足場があなたに与えるとき:
<% form_for([@municipio]) do |f| %>
次のように変更する必要があります。
<% form_for([@municipio, @ciudad]) do |f| %>