Генерация миграции из модели - PullRequest
2 голосов
/ 09 октября 2011

Я новичок в Ruby on Rails и следую приведенной ниже статье: http://guides.rubyonrails.org/migrations.html

Если мне нужно сгенерировать миграцию и модель, я могу использовать, например: -

$ rails generate model Product name:string description:text

и это создаст: -

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

      t.timestamps
    end
  end
end

Однако, если у меня есть модель большего размера (со многими свойствами). Я не хочу помещать все свойства в команду "rails generate". Могу ли я сначала написать код модели, а затем сгенерировать миграцию из этого файла модели?

Извините, что задал такой глупый вопрос. Я просто пытаюсь понять.

Ответы [ 2 ]

2 голосов
/ 09 октября 2011

Генерация команды не должна делать вещь. Это просто скрипт, который поможет вам автоматизировать какую-то работу. Что именно сделала эта команда, вы можете увидеть в консоли после запуска команды generate. Это выглядит так:

    rails generate scaffold User name:string email:string
      invoke active_record
      create
      db/migrate/20100615004000_create_users.rb
    create
      app/models/user.rb
      invoke
      test_unit
      create
      test/unit/user_test.rb
      create
      test/fixtures/users.yml
      route resources :users
      invoke scaffold_controller
      create
      app/controllers/users_controller.rb
      invoke
      erb
      create
      app/views/users
      create
      app/views/users/index.html.erb
      create
      app/views/users/edit.html.erb
      create
      app/views/users/show.html.erb
      create
      app/views/users/new.html.erb
      create
      app/views/users/_form.html.erb
      invoke
      test_unit
      create
      test/functional/users_controller_test.rb
      invoke
      helper
      create
      app/helpers/users_helper.rb
      invoke
      test_unit
      create
      test/unit/helpers/users_helper_test.rb
      invoke stylesheets
      converted by Web2PDFConvert.com
      create
      public/stylesheets/scaffold.css

Вы можете создавать / изменять все файлы своими руками. Но преимущество использования generate состоит в том, что он автоматически вызывает все необходимые плагины и т. Д. Для генерации всех необходимых файлов. Вот почему рекомендуется использовать команду generate даже для очень сложных моделей, контроллеров и т. Д. Поэтому в вашем случае я бы предложил разделить построение модели на несколько этапов. Это может быть так:

rails generate model Product name:string description:text
rails generate migration AddPriceToProducts price:integer
rails generate migration AddDiscountToProducts discount:integer
and so on

Каждый шаг вы можете откатить на случай, если вы допустили какую-то ошибку и это поможет вам не навредить ваша база данных.

1 голос
/ 09 октября 2011

Вы можете вручную закодировать миграцию.Атрибуты модели считываются непосредственно из базы данных ... поэтому, если вы добавите t.string :name в файл миграции, а затем запустите rake db:migrate, этот столбец будет добавлен в таблицу, что сделает его доступным в качестве атрибута вашей модели..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...