Rails 创建关联关系流程

这里主要讲流程,不会涉及到具体的代码,最近开始学习ruby,所以想写一些东西来记录一下。
按照官方文档上面,我们有一个Customer和Order这两个active record,他们的关系是一对多的关系,一个customer可以拥有多个order,但是一个order只能隶属于一个customer。
首先我们执行

rails g model Customer
rails g model Order

前面两句话的意思是说创建两个model,这个时候,这两个对象是没有任何关系的,我们需要为他们创建关系,修改刚才命令行创建的文件,#####_create_orders.rb

class CreateOrders < ActiveRecord::Migration
  def change
   a create_table :orders do |t|
      t.belongs_to :customer
      t.timestamps null: false
    end
  end
end

然后我们再来看看Customer文件

class CreateCustomers < ActiveRecord::Migration
  def change
    create_table :customers do |t|

      t.timestamps null: false
    end
  end
end

到此,数据库层面的关系就已经建立好了,然后执行

rake db:migrate

去更新到数据库,关于rails数据迁移方面的问题,我后面的博客会涉及到,这里就暂时不详说了。
注意光有数据库上面的关系是不够的,我们还需要在model层创建他们的关系,这就像是hibernate,你在database里面首先要定义表的关系,然后再在hibernate的配置文件里面加上他们的关系(题外话,虽然我是搞java的)。直接看model的代码

class Order < ActiveRecord::Base
  belongs_to :customer
end

class Customer < ActiveRecord::Base
  has_many :orders, dependent: :destroy
end

通过上面的代码,就可以完全建立好了他们的关系。

require 'test_helper'

class CustomerTest < ActiveSupport::TestCase
  customer = Customer.find(1)
  order = customer.orders.create(description: '1234567')
  order.save
end

运行这段代码,就可以级联的操作了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值