4

外部キーを使用して移行を実行または生成するにはどうすればよいですか? 私はmunicipiosテーブルを持っており、テーブルに関連付けたいと思っていますciudades。テーブルには次のフィールドがあります: nombre_id(name id)、nombre(name)、departamento(department) この場合、scaffold スクリプトを実行して外部キーの移行を生成するにはどうすればよいですか?

4

2 に答える 2

5

移行ファイルを作成する場合、コマンドは次のとおりです。

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 が主キーであることを意味する場合は、自分で指定する必要があります。

この助けを願っています

于 2011-08-11T05:12:43.837 に答える
0

Scaffold は関係を作成しません。ビュー、コントローラーなどを作成しますが、残り (関係) は手動でコーディングする必要があります。

したがって、「municipios」を足場にしますが、municipio に多くの ciudades が必要な場合は、自分で行う必要があります。例えば:

足場があなたに与えるとき:

<% form_for([@municipio]) do |f| %>

次のように変更する必要があります。

<% form_for([@municipio, @ciudad]) do |f| %>
于 2011-08-11T04:13:05.737 に答える