Изменение разрабатывающих модулей после первого поколения

StackOverflow https://stackoverflow.com/questions/3817939

Вопрос

Я в процессе учебных рельсов. Я нашел разработку, чтобы быть здоровым с получением аутентификации и быстро и без проблем, но у меня есть один вопрос.

Как мне изменить модули после первого запуска генератора разработки (например, Rails G Devise пользователь)? По умолчанию по умолчанию со следующей миграцией:

def self.up
  create_table(:users) do |t|
    t.database_authenticatable :null => false
    t.recoverable
    t.rememberable
    t.trackable

    # t.confirmable
    # t.lockable :lock_strategy => :failed_attempts, :unlock_strategy => :both
    # t.token_authenticatable

    t.timestamps
  end

  add_index :users, :email,                :unique => true
  add_index :users, :reset_password_token, :unique => true
  # add_index :users, :confirmation_token,   :unique => true
  # add_index :users, :unlock_token,         :unique => true
end

Если я запускаю эту миграцию, как добавить / удалить некоторые из этих модулей на более позднем этапе? Например, я хочу добавить запираемый к существующей модели пользователя. Я понимаю, как внести изменения в модель и devise.rb Но я не уверен, что делать с миграциями.

Извиняюсь, если ответ здесь уже, я наполнешь пару часов здесь и в Google и не мог ничего найти. Может быть, я ищу неправильную вещь.

Заранее спасибо!
Джейсон
придавать я использую
Rails 3.0.0
Разработание 1.1.3

Это было полезно?

Решение

Измените строки, которые вы хотите в файле миграции, затем повторите миграцию в соответствии с этими инструкциями:

http://guides.rubyonrails.org/migrations.html.

Другие советы

Я искал ответ на тот же вопрос, и к счастью, оказалось сидеть рядом с кем-то, кто знал, как это сделать.

Вот пример обновления модели пользователей, чтобы включить подтверждаемый модуль через скрипт миграции (файл скрипта скелета, созданный с «Рельсы генерируют миграцию Add_Confirmable_to_users»):

class AddConfirmableToUser < ActiveRecord::Migration
  def self.up
    change_table :users do |t|
      t.confirmable
    end
    add_index :users, :confirmation_token,   :unique => true
  end

  def self.down
    remove_column :users, :confirmable
    remove_index :users, :confirmation_token
  end
end

Я получил эту ошибку:

undefined local variable or method `confirmed_at' for #<User:0x000001041531c8> (NameError)

Чтобы добавить подтверждаемое -

Генерировать миграцию:

$ rails generate migration add_confirmable_to_users

Редактировать миграцию:

class AddConfirmableToUsers < ActiveRecord::Migration
  def change
    add_column :users, :confirmation_token, :string
    add_column :users, :confirmed_at, :datetime
    add_column :users, :confirmation_sent_at, :datetime
    add_column :users, :unconfirmed_email, :string
  end
end

http://guides.rubyonrails.org/migrations.html.
https://github.com/plataformateC/devise/wiki/how-to:-upgrade-to-devise-2.0-migration-schema-style

До тех пор, пока вы просто удаляете варианты, где соответствующие поля уже добавлены в вашу схему (например, подтверждаемое), вы всегда можете просто редактировать модель пользователей напрямую без новой миграции.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top