[英]Circular model dependencies with ruby on rails
我正在尝试为群聊应用程序设计数据库模型层次结构和数据库迁移,因此我是Rails的新手,所以我对应该如何构建它感到非常困惑...任何指导将不胜感激!
它分解如下:
群组<==>用户<==>帖子
群组==>帖子
因此,组具有一堆用户,用户具有一堆组,但是这些组也具有用户发表的帖子。 每个帖子属于一个组和一个用户。 该帖子还必须维护对发布该帖子的用户的引用。
我应该只对这三个表进行联接吗? 这样实用/有效吗?
我只是感到困惑,我应该在哪里使用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'}}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.