为子目录中的模型创建迁移

时间:2015-10-10 11:10:13

标签: ruby-on-rails ruby ruby-on-rails-4 rails-migrations

我在Subdirectory Exceed :: Question中有一个'问题'模型。

现在我想为Question模型添加迁移,所以我运行

rails g migration AddImageToExceedQuestions

之后我运行`rake db:migrate

显示错误 -

Mysql2::Error: Table 'bs_development.questions' doesn't exist: ALTER TABLE `questions`

在我的数据库问题模型中另存为 beyond_question

我也尝试rails g migration AddImageToQuestionsrails g migration AddImageToExceed::Questions,但得到同样的错误。

如何为子目录中的模型创建迁移。

1 个答案:

答案 0 :(得分:0)

在ActiveRecord中,迁移实际上并不依赖于模型类。它们只是修改模式和数据库表,但不关心模型是否实际存在。

导轨生成器非常智能,可以识别某些形式,例如rails g migration AddNameToFooBar name:string会生成:

class AddNameToFooBar < ActiveRecord::Migration
  def change
    add_column :foo_bars, :name, :string
  end
end

Rails会认识到后面的部分是一个表名和蛇案。然后将最后一个单词复数化,如果它是单数。

rails g migration add_name_to_foo_bar name:string创建了相同的迁移。与rails g migration add_name_to_foo_bars name:string相同,除了文件&amp;迁移的类名。

您可以通过打开迁移文件并确保其具有正确的表

来解决您的问题
class AddImageToExceedQuestions < ActiveRecord::Migration
  def change
    add_column :exceed_questions, :image, :string # or binary
  end
end

请注意,您的表应命名为exceed_questions,rails中的表使用表名的复数形式。

相关问题