【问题标题】:6 simple but fundamental issue in RoR migration for beginner初学者的 6 个简单但基本的 RoR 迁移问题
【发布时间】:2012-01-10 16:38:13
【问题描述】:

我在 RoR 迁移中有 6 个简单而基本的问题,虽然我用谷歌搜索并阅读了很多关于它的文章并研究了一周,但我还是不明白。请帮我解决这些问题:


1 - 当我创建一个模型(例如“rails generate model Football_League”)时,我在 db/migration 中看到了一个“create_football_leagues.rb”。我想知道 RoR 更改我给迁移的名称的规则是什么? (我的迁移名称是 FootballLeague 并且 ruby​​ 创建了“create_football_leagues.rb”)


2 - 在该文件中创建类的 ruby​​ 命名规则是什么? (Ruby 在“create_football_leagues.rb”中创建了一个“CreateFootballLeague”类)


3 - 在我使用 rake db:migrate 之后,虽然我进行了 3 次迁移,但我只是在 cmd 中看到以下内容: 而且我没有对另外 3 次迁移进行任何迁移,而有时当我使用 rake db:migrate 运行迁移时,我的所有迁移都已迁移。


4 - 在我输入 rake db:migrate 然后 Rake 执行“create_football_leagues.rb”之后,我进入 mysql,我看到了一个名称为“schema_migrations”的表。在该表中有一些我的迁移版本。现在我想知道这样的表有什么用途?


5 - 在http://guides.rubyonrails.org 我读到如果我们想将表的主键从默认 id 更改为我们自己的字段,我们必须使用 :primary_key 选项,但我不明白如何使用它。如果有人可以举个例子。


6 - 这两个命令有什么区别: 1 - “rails generate migration footabll” 2 - rails generate model football。我知道使用“rails generate model football”我们必须在 app/model 中添加一些额外的文件,但我不了解这些文件的功能。

请朋友帮我解决这些基本问题。特别感谢。

* 我的 RoR 版本是 3.1.3 *

【问题讨论】:

  • 每个问题一个问题,请。你试过什么了?什么有效?什么没有?现有教程如何不足?
  • 这些都应该是他们自己的问题,而不是一个大问题。我们不喜欢从消防水管里喝水。

标签: ruby-on-rails ruby-on-rails-3 activerecord ruby-on-rails-3.1 activemodel


【解决方案1】:
  1. 如果生成模型,则迁移名称为create_ + 复数类名称。 注意您的班级名称不应包含下划线。
  2. 与文件名相同,但按照 Ruby 约定使用驼峰式大小写,而不是下划线。
  3. 之前的迁移已运行。
  4. 它会跟踪架构版本。
  5. this question
  6. 创建迁移。创建一个 Rails 模型对象,其中包括一个迁移。

【讨论】:

  • 你能详细解释一下 3,4,5,6 吗?
  • @ainternet73 有什么要解释的? (这是修辞;正如 cmets 所说,这(a)对于一个问题来说太多了,(b)基本上不言自明,并且(c)在其他教程中都有介绍。所以真的不是教程论坛。
【解决方案2】:

对于 3,4:

假设您创建了两个迁移。然后运行 ​​rake db:migrate。 Rails 现在已经创建了在您的迁移中定义的两个表。此外,它还在表 schema_migrations 中写入了这些迁移的版本号。

如果现在您添加第三个迁移并再次运行 rake db:migrate,Rails 将在 schema_migrations 中查看哪些迁移已经运行并跳过这些迁移(否则您可能会丢失这些表中的数据!)。所以它只运行新的迁移,并在 schema_migrations 中再次添加这个版本。

如果您再次运行 rake db:migrate,它现在什么都不做。

对于 5: 对于对 Rails 没有深入了解的初学者,您应该避免更改此设置。

对于 6: - 轨道生成迁移足球 这只会创建迁移文件。如果要更改现有表(例如添加新列),通常使用此命令 - 轨道生成模型足球 这将生成一个模型和一个迁移以创建属于该模型的表。 Rails 中的模型是属于特定表的类(简单来说,模型还有其他用途)。在您的足球模型中,您稍后将拥有与数据库中的足球桌直接相关的所有代码。您可以在此处定义关系和验证。

您应该非常彻底地阅读一些教程,以清楚地理解这些概念。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-24
    • 1970-01-01
    相关资源
    最近更新 更多