初学者的RoR迁移中的6个简单但基本的问题

时间:2012-01-10 16:38:13

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

您好

我在RoR迁移中有6个简单而基本的问题,虽然我用Google搜索并阅读了很多关于它的文章并研究了一个星期,但我并不理解。请帮助我解决这些问题:


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


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


3 - 在我使用rake db:migrate之后,虽然我有3次迁移,但我在下面的cmd中看到: enter image description here 并且我没有进行任何迁移以进行另外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生成模型足球。我知道使用“rails generate model football”我们必须在app / model中添加一些额外的文件,但我不明白这些文件的功能。

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

*我的RoR版本是3.1.3 *

2 个答案:

答案 0 :(得分:2)

  1. 如果生成模型,则migraton名称为create_ +复数类名。 注意您的班级名称​​不包含下划线。
  2. 与文件名相同,但是像Ruby惯例那样是驼峰式的,而不是强调的。
  3. 以前的迁移已经开始。
  4. 跟踪架构版本。
  5. 请参阅this question
  6. 一个人创建了一个迁移。一个创建Rails模型对象,包括迁移。

答案 1 :(得分:1)

对于3,4:

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

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

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

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

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

你应该非常彻底地完成一些教程,以便清楚地理解这些概念。