Rumah  >  Artikel  >  pangkalan data  >  Bagaimana untuk melaksanakan fungsi korelasi model data dalam Ruby on Rails menggunakan MySQL

Bagaimana untuk melaksanakan fungsi korelasi model data dalam Ruby on Rails menggunakan MySQL

WBOY
WBOYasal
2023-07-31 20:19:54944semak imbas

Cara menggunakan MySQL untuk melaksanakan fungsi korelasi model data dalam Ruby on Rails

Dalam pembangunan Ruby on Rails, reka bentuk pangkalan data dan korelasi adalah bahagian yang sangat penting. MySQL ialah pangkalan data hubungan yang biasa digunakan dengan fungsi berkuasa dan bahasa pertanyaan fleksibel Ia adalah salah satu pangkalan data yang biasa digunakan dalam Ruby on Rails. Artikel ini akan memperkenalkan secara terperinci cara menggunakan MySQL untuk melaksanakan fungsi korelasi model data dalam Ruby on Rails, dan menyediakan contoh kod.

  1. Reka bentuk model data

Sebelum menggunakan MySQL untuk melaksanakan fungsi perkaitan model data, pertama sekali kita perlu mereka bentuk hubungan antara struktur jadual pangkalan data dan model. Dalam MySQL, terdapat tiga perhubungan yang biasa digunakan: satu-dengan-satu, satu-ke-banyak dan banyak-ke-banyak.

  • Perkaitan satu dengan satu: Terdapat hanya satu surat-menyurat antara kedua-dua jadual, seperti pengguna (Pengguna) dan kad ID (IDCard Satu pengguna hanya sepadan dengan satu kad ID, dan satu kad ID hanya sepadan dengan satu). pengguna.
  • Perkaitan satu-ke-banyak: Rekod dalam satu jadual boleh sepadan dengan berbilang rekod dalam jadual lain, seperti Pengguna dan Pesanan Seorang pengguna boleh mempunyai beberapa pesanan, tetapi pesanan hanya boleh dimiliki oleh satu pengguna.
  • Perkaitan banyak-ke-banyak: Terdapat berbilang surat-menyurat antara dua jadual, seperti Pengguna dan Peranan Satu pengguna boleh mempunyai berbilang peranan dan satu peranan juga boleh dimiliki oleh berbilang pengguna.
  1. Buat Model dan Migrasi Pangkalan Data

Dalam Ruby on Rails, kami menggunakan baris arahan untuk mencipta model dan migrasi pangkalan data untuk mentakrif dan mencipta jadual dan model pangkalan data. Berikut ialah contoh kod untuk cara mencipta model dan penghijrahan pangkalan data untuk tiga perhubungan:

  • Perkaitan satu dengan satu:
# 创建用户模型
rails generate model User name:string
# 创建身份证模型
rails generate model IDCard number:integer

# 编辑迁移文件
class CreateIDCards < ActiveRecord::Migration[6.1]
  def change
    create_table :id_cards do |t|
      t.integer :number
      t.references :user # 添加用户外键
      t.timestamps
    end
  end
end

# 运行数据库迁移
rails db:migrate

# 编辑用户模型
class User < ApplicationRecord
  has_one :id_card # 声明一对一关联关系
end

# 编辑身份证模型
class IDCard < ApplicationRecord
  belongs_to :user # 声明一对一关联关系
end
  • Perkaitan satu-ke-banyak:
# 创建用户模型
rails generate model User name:string
# 创建订单模型
rails generate model Order number:integer user:references

# 编辑迁移文件
class CreateOrders < ActiveRecord::Migration[6.1]
  def change
    create_table :orders do |t|
      t.integer :number
      t.references :user # 添加用户外键
      t.timestamps
    end
  end
end

# 运行数据库迁移
rails db:migrate

# 编辑用户模型
class User < ApplicationRecord
  has_many :orders # 声明一对多关联关系
end

# 编辑订单模型
class Order < ApplicationRecord
  belongs_to :user # 声明一对多关联关系
end
  • Many-to-many persatuan:
# 创建用户模型
rails generate model User name:string
# 创建角色模型
rails generate model Role name:string

# 编辑迁移文件
class CreateRolesUsers < ActiveRecord::Migration[6.1]
  def change
    create_table :roles_users, id: false do |t|
      t.references :role
      t.references :user
    end
  end
end

# 运行数据库迁移
rails db:migrate

# 编辑用户模型
class User < ApplicationRecord
  has_and_belongs_to_many :roles # 声明多对多关联关系
end

# 编辑角色模型
class Role < ApplicationRecord
  has_and_belongs_to_many :users # 声明多对多关联关系
end
  1. Operasi persatuan data

Selepas hubungan persatuan pangkalan data diwujudkan, kami boleh melakukan operasi persatuan data, seperti mencipta data berkaitan, menanyakan data berkaitan, mengemas kini data berkaitan, dsb. Berikut ialah contoh kod yang beroperasi pada tiga jenis persatuan:

  • Persatuan satu dengan satu:
# 创建用户和身份证
user = User.create(name: "John")
id_card = IDCard.create(number: 123456, user: user)

# 查询用户的身份证
user.id_card

# 查询身份证的用户
id_card.user
  • Persatuan satu-ke-banyak:
# 创建用户和订单
user = User.create(name: "John")
order1 = Order.create(number: 1, user: user)
order2 = Order.create(number: 2, user: user)

# 查询用户的订单
user.orders

# 查询订单的用户
order1.user
order2.user
  • Persatuan ramai-ke-banyak
  • :
# 创建用户和角色
user1 = User.create(name: "John")
user2 = User.create(name: "Tom")
role1 = Role.create(name: "Admin")
role2 = Role.create(name: "User")

# 建立用户和角色的关联
user1.roles << role1
user1.roles << role2
user2.roles << role2

# 查询用户的角色
user1.roles
user2.roles

# 查询角色的用户
role1.users
role2.users

Melalui contoh kod di atas, Kita boleh melihat cara melaksanakan fungsi korelasi model data dalam Ruby on Rails menggunakan MySQL. Sama ada hubungan satu-dengan-satu, satu-ke-banyak atau ramai-ke-banyak, ia boleh direalisasikan melalui sintaks ringkas dan berkuasa yang disediakan oleh Rails. Dengan mereka bentuk perhubungan yang betul antara struktur dan model jadual pangkalan data, dan mengendalikan data berkaitan dengan betul, kami boleh membantu kami membina aplikasi yang lebih cekap dan fleksibel.

Atas ialah kandungan terperinci Bagaimana untuk melaksanakan fungsi korelasi model data dalam Ruby on Rails menggunakan MySQL. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn