首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为子目录中的模型创建迁移

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

Stack Overflow用户
提问于 2015-10-10 11:10:13
回答 1查看 1.4K关注 0票数 0

我在子目录超量::问题中有一个‘问题’模型。

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

rails g migration AddImageToExceedQuestions

之后,当我运行`rake db时:

它的显示错误-

代码语言:javascript
复制
Mysql2::Error: Table 'bs_development.questions' doesn't exist: ALTER TABLE `questions`

在我的数据库问题模型中保存为exceed_question.

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

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

EN

回答 1

Stack Overflow用户

发布于 2015-10-10 19:45:02

在ActiveRecord中,迁移实际上并不绑定到模型类。他们只是修改模式和数据库表,但并不关心您的模型是否真的存在。

rails生成器非常聪明,能够识别一些形式,比如rails g migration AddNameToFooBar name:string,这将生成:

代码语言:javascript
复制
class AddNameToFooBar < ActiveRecord::Migration
  def change
    add_column :foo_bars, :name, :string
  end
end

Rails会认识到,在to之后的部分是一个表名,并且是蛇的大小写。如果最后一个词是单数的话,就把它复数化。

rails g migration add_name_to_foo_bar name:string创建了一个相同的迁移。除了迁移的文件&类名之外,rails g migration add_name_to_foo_bars name:string也是如此。

您可以通过打开迁移文件并确保它具有正确的表来解决问题。

代码语言:javascript
复制
class AddImageToExceedQuestions < ActiveRecord::Migration
  def change
    add_column :exceed_questions, :image, :string # or binary
  end
end

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33053318

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档