两个模型,可以通过另一个模型建立多对多的关联,可以使用 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 ..