如何建立一对多关系?

发布于 2024-12-21 20:09:51 字数 196 浏览 0 评论 0原文

我有以下模型:

User (id, name, network_id)
Network(id, title)

我需要添加什么样的 Rails 模型关联才能执行此操作:

@user.network.title
@network.users

谢谢

I have the following models:

User (id, name, network_id)
Network(id, title)

What kind of Rails model assoc do I need to add so that I can do:

@user.network.title
@network.users

Thanks

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

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

发布评论

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

评论(3

美人迟暮 2024-12-28 20:09:51

因此网络has_many个用户和一个用户belongs_to网络。

如果您还没有添加 network_id 到用户表中,那么只需添加一个 network_id 即可,而且由于它是一个 foreign_key 值得为其建立索引。

rails生成迁移AddNetworkIdToUsers

class AddNetworkIdToUsers < ActiveRecord::Migration
  def change
    add_column :users, :network_id, :integer
    add_index  :users, :network_id
  end
end

在网络模型中执行:

class Network < ActiveRecord::Base
  has_many :users
end

在用户模型中执行:

class User < ActiveRecord::Base
  belongs_to :network
end

so network has_many users and a user belongs_to network.

Just add a network_id to users table if you still haven't and also since it's a foreign_key is worth indexing it.

rails generate migration AddNetworkIdToUsers

class AddNetworkIdToUsers < ActiveRecord::Migration
  def change
    add_column :users, :network_id, :integer
    add_index  :users, :network_id
  end
end

In the network model do:

class Network < ActiveRecord::Base
  has_many :users
end

In the user model do:

class User < ActiveRecord::Base
  belongs_to :network
end
╰つ倒转 2024-12-28 20:09:51

根据您的数据库设置,您只需将以下行添加到您的模型中:

class User < ActiveRecord::Base
  belongs_to :network
  # Rest of your code here
end

class Network < ActiveRecord::Base
  has_many :users
  # Rest of your code here
end

如果您的设置没有 network_id,您应该使用 daniels 答案。

According to your database-setup, you just have to add the following lines to your models:

class User < ActiveRecord::Base
  belongs_to :network
  # Rest of your code here
end

class Network < ActiveRecord::Base
  has_many :users
  # Rest of your code here
end

In case you have a setup without network_id, you should go with daniels answer.

日暮斜阳 2024-12-28 20:09:51

这是我的方式:
运行:

$rails generate migration AddNetworkIdToUsers

然后配置迁移文件:

class AddNetworkIdToUsers < ActiveRecord::Migration[5.1]

  def up

    add_column :users, :network_id, :integer
    add_index  :users, :network_id
  end

  def down

    remove_index :users, :network_id
    remove_column :users, :network_id
  end

end

This is my way:
run:

$rails generate migration AddNetworkIdToUsers

then config migration file:

class AddNetworkIdToUsers < ActiveRecord::Migration[5.1]

  def up

    add_column :users, :network_id, :integer
    add_index  :users, :network_id
  end

  def down

    remove_index :users, :network_id
    remove_column :users, :network_id
  end

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