7

以下のコマンドをコンソールで実行しました

rails g migration payslips first_name:string last_name:string

しかし、これは以下のような空のファイルを生成するだけです

class Payslips < ActiveRecord::Migration
  def change
  end
end

理由がわかりません。コンソール生成コマンドに何か問題がありますか?

4

4 に答える 4

6

正しい機能です。モデルを作成する場合は、次を実行する必要があります。

rails g model payslips first_name:string last_name:string

次に、次のようになります。

class CreatePayslips < ActiveRecord::Migration
  def change
    create_table :payslips do |t|
      t.string :first_name
      t.string :last_name

      t.timestamps
    end
  end
end
于 2013-10-01T03:45:59.777 に答える
2

次の言葉を使用してください:テーブル名の前に作成します。

$ rails generate migration CreateProducts name:string part_number:string

生成:

class CreateProducts < ActiveRecord::Migration
  def change
    create_table :products do |t|
      t.string :name
      t.string :part_number
    end
  end
end

ソース: http://guides.rubyonrails.org/migrations.html

于 2013-12-05T07:32:40.323 に答える
2

モデルが作成されたと仮定すると、本当にやりたいことを説明するときは、より明確にする必要があります。

rails g migration add_first_name_and_last_name_to_payslips first_name:string last_name:string

上記は移行者に first_name と last_name を給与明細テーブルに追加するように指示するため、最終的にこの移行になります。

class AddFirstNameAndLastNameToPayslips < ActiveRecord::Migration
  def change
    add_column :payslips, :first_name, :string
    add_column :payslips, :last_name, :string
  end
end
于 2013-12-04T07:53:35.710 に答える
0

移行を単独で生成して、テーブルを変更できます。ただし、新しいテーブルを作成するには、モデルを生成して、対応するモデルのテーブル移行を作成する必要があります(@efrenfuentesが言ったように)

または、プラグインと呼ばれるプラグインでやりたいことを試すことができますmigration_for

rails plugin install git://github.com/capotej/migration_for.git

rails g migration_for create_table:payslips add_column:payslips:first_name:string add_column:payslips:last_name:string

于 2013-10-01T04:34:06.627 に答える