has_many :through:多对多的关联

0
视频
0
完成
0%
进度
0
分钟
0
完成
0%
进度

两个模型,可以通过另一个模型建立多对多的关联,可以使用 has_many :through 这种关系 .. 比如用户,预订,房间这三个模型 ... 用户可以预订房间 ...

对于用户来说,它拥有多个预订,通过预订,跟用户相关的会有多个房间 .. 对于房间来说,它也会有多个相关的预订,通过预订,跟房间相关的也会有多个用户 ... 预订属于用户,同时它也属于房间 ...

先去创建这几个模型 ... 一个是 Room ,表示房间 ... 添加一个 title ,类型是 string ..

rails generate model Room name:string

再去创建一个 Reservation ... 它表示预订 ..

rails generate model Reservation

用户模型已经有了 ... 先打开它 ... 在里面描述一下它跟预订还有房间的关系 .. 用户 has_many :reservations ,有多个预订 ...

用户 has_many :rooms, through: :reservations ... 通过预订,用户又会关联多个房间 ...

再找到 Room ... 房间 has_many :reservations ,可以有多个预订 ... 房间又会 has_many :users, through: :reservations ,通过预订,跟房间相关的会有多名用户 ...

然后打开预订这个模型 ...

预订 belongs_to :user ... 还 belongs_to :room

再编辑一下创建预订这个表的 migration ... 添加一个 t.belongs_to :user, index: true ,再添加一个 t.belongs_to :room, index: true ..

运行一下 migration ... rails db:migrate ..

在数据库里面,查看一下预订表的结构 .. DESCRIBE reservations; 在这个表里,会有一个 user_id ,对应的值是 users 表里的 id,

还有一个 room_id .. 对应的是 rooms 表里的 id ..

has_many :through:多对多的关联《 Rails:关联 》

统计

14696
分钟
0
你学会了
0%
完成

社会化网络

关于

微信订阅号

扫描微信二维码关注宁皓网,每天进步一点