我正在尝试为群聊应用程序设计数据库模型层次结构和数据库迁移,我是 Rails 的新手,所以我很困惑应该如何构建它...任何指导都是非常感谢!
分解如下:
群组<==>用户<==>帖子
群组 ==> 帖子
所以群组有一堆用户,用户有一堆群组,但群组也有用户发布的帖子。每个帖子属于一个组和一个用户。该帖子还必须保留对发布它的用户的引用。
我应该将所有 3 个连接起来吗?这实用/有效吗?
我只是很困惑应该在哪里使用 belongs_to
、has_one
、has_many
、has_and_belongs_to_many
以及我该如何使用应该写迁移文件...
提前感谢任何帮助
最佳答案
你可以用下面的方式来做
团体
has_and_belongs_to_many :users
has_many :posts
用户
has_and_belongs_to_many :groups
has_many :posts
帖子
belongs_to :group
belongs_to :user
posts
表应该有 group_id
和 user_id
列
同时创建表 groups_users
迁移:
class CreateGroupsUsers < ActiveRecord::Migration
def change
create_table :groups_users, id: false do |t|
t.references :group, index: true
t.references :user, index: true
end
end
end
这应该有效!
编辑
用于添加用户和组之间的关联:
group = Group.create(name: 'New Group')
user = User.last
user.groups << group
或
user.build_group(name: 'New Group')
user.save
或者你可以使用 nested_attributes
User.create(params[:user])
其中 params[:user] = {user_name: 'James Bond', group_attributes: {name: 'New Group'}}
关于mysql - ruby on rails 的循环模型依赖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34676175/