一对多关联

假设

一个用户有多个邮箱,一个邮箱只属于一个用户

1、分别建立用户和邮箱模型

rails g model user user_name:string user_pwd:string
rails g model mailbox address:string pwd:string

2、修改迁移文件

gedit db/migrate/20170522112232_create_mailboxes.rb

class CreateMailboxes < ActiveRecord::Migration[5.0]
  def change
    create_table :mailboxes do |t|
      #建立索引和外键
      t.belongs_to :user, index: true,foreign_key: true

      t.string :address
      t.string :pwd


      t.timestamps
    end
  end
end

3、执行迁移

rails db:migrate

4、修改模型

gedit app/models/user.rb

class User < ApplicationRecord
    has_many :mailboxes,dependent: :destroy
end

gedit app/models/mailbox.rb

class Mailbox < ApplicationRecord
    belongs_to :user
end

5、验证

a、创建

User.create(user_name:"aaa",user_pwd:"bbb")
User.find_by(user_name:"aaa").mailboxes.create(address:"ccc",pwd:"eee")
User.find_by(user_name:"aaa").mailboxes.all

  User Load (0.1ms)  SELECT  "users".* FROM "users" WHERE "users"."user_name" = ? LIMIT ?  [["user_name", "aaa"], ["LIMIT", 1]]
  Mailbox Load (0.1ms)  SELECT "mailboxes".* FROM "mailboxes" WHERE "mailboxes"."user_id" = ?  [["user_id", 1]]
=> #<ActiveRecord::AssociationRelation [#<Mailbox id: 1, user_id: 1, address: "ccc", pwd: "eee", created_at: "2017-05-22 11:31:48", updated_at: "2017-05-22 11:31:48">]>


Mailbox.create(address:"ccc",pwd:"eee")

   (0.1ms)  begin transaction
   (0.1ms)  rollback transaction
=> #<Mailbox id: nil, user_id: nil, address: "ccc", pwd: "eee", created_at: nil, updated_at: nil>

b、销毁(级联)


User.find_by(user_name:"aaa").destroy
Mailbox.all

  Mailbox Load (0.2ms)  SELECT "mailboxes".* FROM "mailboxes"
=> #<ActiveRecord::Relation []>












  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值