美文网首页ruby on rails
(01)指定外键+多对多关联

(01)指定外键+多对多关联

作者: suhuanzhen | 来源:发表于2016-11-29 16:43 被阅读0次

构造案例

创建项目

rails _4.2.2_ new active_record_second -d=mysql

修改Gemfile文件,把gem源替换为source 'https://gems.ruby-china.org',把gem 'mysql2'替换为gem 'mysql2', '~> 0.3.18'
把database.yml文件里面的数据库密码设置为本地mysql数据库的密码

cd  active_record_second
bundle install
rake  db:create

构造数据

A表和B表的多对多关系是需要通过中间表C,表C保存两个表的外键。而A表和B表则保持原有结构即可,不需要添加C表的外键。

首先需要products表的数据,我们直接在navicat里面像复制文件一样,用ctrl+c和ctrl+v的方式把products表复制到active_record_second_development数据库就行

rails g migration CreateActivityFloors
rails g migration CreateActivityFloorProducts

rake db:migrate

添加模型文件




迁移文件里面像t.string :ID, limit: 36, primary: true, null: false这样给字段设置为主键是不报错但是不生效的,于是我们通过navicat把表中ID字段都设置为主键。

填充数据
一个楼层下面有多个商品,一个商品有多个楼层(这里我们p1商品同时属于3个楼层)




rails c下检验关联关系

  • 一个楼层对应多个商品


  • 一个商品可以属于多个楼层


关联时自己指定外键

我们给活动楼层再加个1对多关联,一个顶部活动下面有多个活动楼层

rails g migration CreateTopActivities
rake db:migrate
rails g migration AddTopIdToActivityFloors
rake  db:migrate

如上,我们给activity_floor指定外键,不一定非要按默认约定命名为TopActivityID,我们添加外键为TopID

  • 修改和填充数据


  • 添加模型文件和模型关联



  • 使用指定外键,在rails c下试验说明关联成功


使用Git做版本控制

进入项目根目录

.../active_record_second#  git init
Initialized empty Git repository in /home/**********/active_record_second/.git/
git add -A
git commit -m "ActiveRecordSecond"

然后创建一个git仓库


提交

git push -u https://github.com/xiaohuacc/active_record_second.git master

相关文章

网友评论

    本文标题:(01)指定外键+多对多关联

    本文链接:https://www.haomeiwen.com/subject/xgtzpttx.html