Rails 3,使用外键生成迁移

发布于 2024-11-29 03:27:19 字数 198 浏览 4 评论 0原文

如何使用外键进行或生成迁移?我有 municipios 表,我想与表 ciudades 关联,该表将具有以下字段:nombre_id(名称 id)、< code>nombre(名称),departamento(部门)在这种情况下,我如何运行脚手架脚本来生成外键迁移?

How I can do or generate a migration with a foreign key? I have municipios table, and I want to relate with the table ciudades, the table will have these fields: nombre_id (name id), nombre (name), departamento (department) in this case how I can run the scaffold script to generate the foreign key migration?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

暖阳 2024-12-06 03:27:20

如果您的意思是要创建迁移文件,则命令为

railsgeneratemigrationNAME[field:typefield:type][options]

或快捷方式

railsgmigrationNAME[field:typefield :type] [options]

但是如果你想从引用其他模型的模型创建一个脚手架。也许您可以像这样

使用脚手架创建 ciudades 模型

rails g scaffold ciudades nombre_id:integer nombre:integer departamento:string

创建引用 ciudades 的 municipios 模型,

rails g scaffold municipios ciudades:references

这将在 municipios 表上创建属性 ciudades_id 。
迁移应该如下所示。

class CreateMunicipios < ActiveRecord::Migration
  def self.up
    create_table :municipios do |t|
      t.references :ciudades

      t.timestamps
    end
  end

  def self.down
    drop_table :municipios
  end
end

同样在 municipios 模型上,它将创建 belongs_to 关系。

但这不会更新 cuidades 模型。您必须指定关系。

另请记住,rails 会自动在模型上创建 id 字段。这是公约。如果您的意思是 nombre_id 是主键,则必须自行指定。

希望这有帮助

If you mean that you want to create the migration file the command is

rails generate migration NAME [field:type field:type] [options]

or shortcut

rails g migration NAME [field:type field:type] [options]

But if you want to create a scaffold from model that referencing other model. Maybe you could do it like this

create ciudades model with scaffold

rails g scaffold ciudades nombre_id:integer nombre:integer departamento:string

create municipios model that reference ciudades

rails g scaffold municipios ciudades:references

this will create attribute ciudades_id on the municipios table.
The migration should look like this.

class CreateMunicipios < ActiveRecord::Migration
  def self.up
    create_table :municipios do |t|
      t.references :ciudades

      t.timestamps
    end
  end

  def self.down
    drop_table :municipios
  end
end

also on the municipios model it will create the belongs_to relation.

but this does not update the cuidades model. You have to specify the relation.

Also keep in mind that rails automatically create id field on a model. it is the convention. if you mean that nombre_id is the primary key, you have to specify it your self.

Hope this help

最冷一天 2024-12-06 03:27:20

Scaffold 不会为您创建关系。它将创建视图、控制器等,但其余部分(关系)需要手动编码。

所以你搭建了“municipios”,但是如果你想让municipio有很多ciudades,你需要自己做。例如:

当scaffold给你:

<% form_for([@municipio]) do |f| %>

你需要将其更改为:

<% form_for([@municipio, @ciudad]) do |f| %>

Scaffold will not create the relationships for you. It will create views, controllers and others but the rest (relationships) need to be coded by hand.

So you scaffold "municipios", but if you want municipio has many ciudades, you need to do it yourself. For example:

When scaffold gives you:

<% form_for([@municipio]) do |f| %>

You need to change it to:

<% form_for([@municipio, @ciudad]) do |f| %>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文