gpt4 book ai didi

ruby-on-rails - 如何生成模型之间的关联

转载 作者:行者123 更新时间:2023-12-02 23:51:59 25 4
gpt4 key购买 nike

我想知道如何在 Rails 中正确进行关联。首先,我创建一个城市模型和一个组织。现在我想让一个组织拥有一个城市...这是通过添加 has_manyhas_one 关联来完成的。之后我运行rake db:migrate。但不知何故,它没有在我的数据库模型中创建字段 citycity_id 。我必须自己做吗? Rails 现在不应该在数据库中创建外键约束吗?

要查看它是否有效,我正在使用 rails c 并输入 Organization答案如下:

=> Organisation(id: integer, name: string, description: string, url: string, created_at: datetime, updated_at: datetime) 

请原谅我的愚蠢问题...我是 Rails 的初学者,一切都还很陌生。

谢谢!

<小时/>

城市:

class City < ActiveRecord::Base
has_many :organisations
end

组织:

class Organisation < ActiveRecord::Base
has_one :city
end

创建城市:

class CreateCities < ActiveRecord::Migration
def change
create_table :cities do |t|
t.string :name
t.string :country

t.timestamps
end
end
end

创建组织:

class CreateOrganisations < ActiveRecord::Migration
def change
create_table :organisations do |t|
t.string :name
t.string :description
t.string :url

t.timestamps
end
end
end

最佳答案

这有几个问题。

  1. 您需要在 has_manyhas_one 关联的另一端指定 belongs_to。定义 belongs_to 关联的模型是外键所属的位置。

    因此,如果一个组织has_one :city,那么城市需要belongs_to :organization。或者,如果某个城市has_one :organization,则该组织需要belongs_to :city

    查看您的设置,您似乎希望在 City 模型中定义 belongs_to

  2. 迁移不是基于模型定义构建的。相反,它们是从 db/migrations 文件夹构建的。当您运行 rails g model 命令(或 rails g migration)时,就会创建迁移。为了获得外键,您需要告诉生成器创建它。

    rails generate model organization name:string description:string url:string city_id:integer

    或者

    rails generate model city name:string description:string url:string organization_id:integer

关于ruby-on-rails - 如何生成模型之间的关联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8122711/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com