Изменение разрабатывающих модулей после первого поколения
-
26-09-2019 - |
Вопрос
Я в процессе учебных рельсов. Я нашел разработку, чтобы быть здоровым с получением аутентификации и быстро и без проблем, но у меня есть один вопрос.
Как мне изменить модули после первого запуска генератора разработки (например, 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
Решение
Измените строки, которые вы хотите в файле миграции, затем повторите миграцию в соответствии с этими инструкциями:
Другие советы
Я искал ответ на тот же вопрос, и к счастью, оказалось сидеть рядом с кем-то, кто знал, как это сделать.
Вот пример обновления модели пользователей, чтобы включить подтверждаемый модуль через скрипт миграции (файл скрипта скелета, созданный с «Рельсы генерируют миграцию 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
До тех пор, пока вы просто удаляете варианты, где соответствующие поля уже добавлены в вашу схему (например, подтверждаемое), вы всегда можете просто редактировать модель пользователей напрямую без новой миграции.