我在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 AddImageToQuestions
和rails g migration AddImageToExceed::Questions
,但得到同样的错误。
如何为子目录中的模型创建迁移。
答案 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中的表使用表名的复数形式。