Как удалить модель и ее таблицу в Ruby on Rails? - PullRequest
0 голосов
/ 15 октября 2010

Я углубляюсь в RoR, и мне нужно удалить модель и ее таблицу, а также обновить другие модели, которые ссылаются на нее. Я выполнил поиск в Google и SO, и лучший ответ, который я нашел, был this , но ответ мне неясен. Окончательный консенсус заключался в том, чтобы использовать метод ruby script/destroy model, а затем «вручную редактировать любые миграции, которые могут содержать ссылки на эти удаленные модели» Это последняя часть, о которой мне неясно. Я хочу удалить модели для моих моделей и таблиц user и profile ...

class CreateUsers < ActiveRecord::Migration
  def self.up
    create_table :users do |t|
        t.string :email
        t.string :password

      t.timestamps
    end
  end

  def self.down
    drop_table :users
  end
end

class CreateProfiles < ActiveRecord::Migration
  def self.up
    create_table :profiles do |t|
        t.string :name
        t.integer :user_id

      t.timestamps
    end
  end

  def self.down
    drop_table :profiles
  end
end

и обновите модель article и таблицу, которая ссылается на них ...

class CreateArticles < ActiveRecord::Migration
  def self.up
    create_table :articles do |t|
        t.string :title
        t.text :body
        t.datetime :published_at
        t.string :image

      t.timestamps
    end
  end

  def self.down
    drop_table :articles
  end
end



class AddUserIdToArticles < ActiveRecord::Migration
  def self.up
    add_column :articles, :user_id, :integer
  end

  def self.down
    remove_column :articles, :user_id
  end
end

Могу ли я просто сделать ruby script/destroy user и затем вызвать методы self.down в миграциях article? Если да, то как мне вызвать методы self.down и в каком порядке?

Заранее большое спасибо за помощь!

1 Ответ

1 голос
/ 15 октября 2010

Да. Просто удалите его с помощью

ruby script/destroy model user
ruby script/destroy model profile

А затем откатите вашу базу данных или self.down с этим:

rake db:rollback

Теперь вы можете безопасно удалить файл миграции.

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