mysql - ruby on rails 的循环模型依赖

标签 mysql ruby-on-rails ruby database models

我正在尝试为群聊应用程序设计数据库模型层次结构和数据库迁移,我是 Rails 的新手,所以我很困惑应该如何构建它...任何指导都是非常感谢!

分解如下:

群组<==>用户<==>帖子
群组 ==> 帖子

所以群组有一堆用户,用户有一堆群组,但群组也有用户发布的帖子。每个帖子属于一个组和一个用户。该帖子还必须保留对发布它的用户的引用。

我应该将所有 3 个连接起来吗?这实用/有效吗?

我只是很困惑应该在哪里使用 belongs_tohas_onehas_manyhas_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_iduser_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/

相关文章:

java - 将 mysql jar 添加到 lib 但在通过 intelliJ 工作到 tomcat 的本地部署中仍然面临类未找到异常?

php - 压缩字符串,然后解压缩字符串?

ruby-on-rails - 在单个操作中创建新 ActiveRecord 模型对象的层次结构的首选方法

ruby-on-rails - 如何在 Ruby on Rails 中创建批量操作事务

ruby-on-rails - ActiveAdmin 登录页面

ruby - 如何求和两个矩阵?

java - 如何在启动时不显示数据库中的数据?

mysql根据父id排序类别

ruby-on-rails - Hoptoad v. Exceptional v. exception_notification v. exception_logger

ruby-on-rails - 在 rails 中转换路线参数