Ruby on rails Rails迁移表

Ruby on rails Rails迁移表,ruby-on-rails,Ruby On Rails,据我所知,您可以在db/migrations中指定模型字段数据类型。这对我来说是新的,就像在Django中一样,您可以直接在模型类中指定您的模型字段数据类型。我这样想对吗?这是rails中的常见做法,还是我只是在使用变通方法 另外,如何在此db/migrations文件中指定表关系。例如,如果我有一个称为a类的模型 我有另一个叫做B类的模型,我想和a类建立一对多的关系。我就是这么做的吗 class ClassA < ActiveRecord::Migration def change

据我所知,您可以在db/migrations中指定模型字段数据类型。这对我来说是新的,就像在Django中一样,您可以直接在模型类中指定您的模型字段数据类型。我这样想对吗?这是rails中的常见做法,还是我只是在使用变通方法

另外,如何在此db/migrations文件中指定表关系。例如,如果我有一个称为a类的模型

我有另一个叫做B类的模型,我想和a类建立一对多的关系。我就是这么做的吗

class ClassA < ActiveRecord::Migration
  def change
    create_table :projects do |t|
      t.classB :name
    end
  end
end
ClassA

如何验证迁移文件和模型文件没有任何语法错误。据我所知,我只是运行rake db:migrate,但如果我不希望在文件中指定字段数据类型时替换迁移文件,该怎么办?

创建新模型时,rails会创建shema迁移文件和模型。 在迁移文件中指定列。可以在这里添加一些代码,但应该尽可能少地添加。对于up和down,可以在这里添加/删除列,添加db索引等等

在您的模型中,您定义了您的关系
所属
有许多
,等等。您的
范围
用于您的表,ofc用于您的模型的方法。您的模型继承表列,因此您可以直接访问它们

我不知道Django,这是rails中的常见做法


您可以在此处查看关系和其他良好信息:

当您创建新模型时,rails将创建您的shema迁移文件和模型。 在迁移文件中指定列。可以在这里添加一些代码,但应该尽可能少地添加。对于up和down,可以在这里添加/删除列,添加db索引等等

在您的模型中,您定义了您的关系
所属
有许多
,等等。您的
范围
用于您的表,ofc用于您的模型的方法。您的模型继承表列,因此您可以直接访问它们

我不知道Django,这是rails中的常见做法


关系和其他好的信息,你可以在这里查看:

好的,所以总而言之,你似乎有三个问题:

1.:据我所知,您可以在db/migrations中指定模型字段数据类型。[…]我这样想对吗?这是rails中的常见做法,还是我只是在使用变通方法

是的,你是对的。字段数据类型不显示在模型内部,只显示在迁移中

顺便说一下:我很少发现自己手动编写迁移文件。如果使用rails命令,它将自动生成迁移文件。例如,如果您使用

rails g model User first\u name:string last\u name:string

这将创建一个名为User的模型,以及一个迁移,该迁移将创建一个users表,其中包含
id
first\u name
last\u name
和timestamp字段。如果您想在以后添加或删除列,有一个很好的技巧;快跑

rails g迁移将字段添加到用户字段名称:字段类型

rails g迁移从用户字段名称中删除字段

按您认为合适的方式替换
字段名称
字段类型
用户
。此命令将为您创建一个迁移以添加或删除字段,因此您不必手动写入这些字段

2.:另外,如何在此db/migrations文件中指定表关系

你没有。Rails通过诸如has\u many、belishing\u to、has\u和\u belishing\u to等关联方法为您处理此问题。请看一看。在数据库端,您需要做的一件事是为一对多关系添加外来id列,或者为多对多关系创建联接表。例如,如果您有一个用户表和一个图片表,并且每个图片都属于一个用户,那么在您的用户模型中,您将写入
具有多个:图片
,在您的图片模型中,您将写入
属于:用户
,并且在您的图片表中,您需要一个名为
用户id
的字段,该字段的类型为整数

3.:如何验证迁移文件和模型文件没有任何语法错误


你也不知道。您只需运行
rakedb:migrate
,如果出现故障,它将告诉您发生故障的位置和原因。如果您的模型有语法错误,它将告诉您何时启动服务器,何时运行测试,或者至少何时在某处使用它(例如,当您调用模型的方法时)。如果您指的是如何验证模型的数据,那么这是一个完全不同的问题-请参阅,它详细解释了检查存在性、唯一性、长度等的验证。

好的,那么总体而言,您似乎有三个问题:

1.:据我所知,您可以在db/migrations中指定模型字段数据类型。[…]我这样想对吗?这是rails中的常见做法,还是我只是在使用变通方法

是的,你是对的。字段数据类型不显示在模型内部,只显示在迁移中

顺便说一下:我很少发现自己手动编写迁移文件。如果使用rails命令,它将自动生成迁移文件。例如,如果您使用

rails g model User first\u name:string last\u name:string

这将创建一个名为User的模型,以及一个迁移,该迁移将创建一个users表,其中包含
id
first\u name
last\u name
和timestamp字段。如果您想在以后添加或删除列,有一个很好的技巧;快跑

rails g迁移将字段添加到用户字段名称:字段类型

rails g迁移从用户字段名称中删除字段

替换
字段名称
字段类型class CreateProducts < ActiveRecord::Migration
  def change
    create_table :products do |t|
      t.string :name
      t.text :description
    end
  end
end