Ruby on rails 如果组创建者离开组,则将组创建者转移给其他用户
第一个问题:我有一个组模型,Ruby on rails 如果组创建者离开组,则将组创建者转移给其他用户,ruby-on-rails,rails-activerecord,has-and-belongs-to-many,user-accounts,Ruby On Rails,Rails Activerecord,Has And Belongs To Many,User Accounts,第一个问题:我有一个组模型,属于:creator,:class\u name=>“User”,如果创建者离开,我希望组中的其他人成为“创建者”。我该怎么做 作为第二个问题,我还想让离开的创建者在离开时选择一个新的创建者,或者让它自动分配 目前,我的模型是这样的: class Group < ActiveRecord::Base belongs_to :creator, :class_name => "User" has_many :members, :through =&
属于:creator,:class\u name=>“User”
,如果创建者离开,我希望组中的其他人成为“创建者”。我该怎么做
作为第二个问题,我还想让离开的创建者在离开时选择一个新的创建者,或者让它自动分配
目前,我的模型是这样的:
class Group < ActiveRecord::Base
belongs_to :creator, :class_name => "User"
has_many :members, :through => :memberships
has_many :memberships, :foreign_key => "new_group_id"
类组“用户”
拥有多个:会员,:至=>:会员资格
拥有\u多个:成员身份,:外键=>“新\u组\u id”
和我的用户模型:
class User < ActiveRecord::Base
has_many :groups, foreign_key: :creator_id
has_many :memberships, foreign_key: :member_id
has_many :new_groups, through: :memberships
class用户
作为第三个问题,我希望当造物主离开时,这个团体被摧毁。如何建立这种关系?这是三个问题,前两个问题非常开放,因此我将尝试回答所有问题,以便在今后做出一些假设 第一个问题 这取决于选择新创建者的行为。是否要从当前
成员自动分配它?您想让其他成员更改为自动将自己指定为创建者吗?在后者中,您需要为您的成员提供一个完整的UI(路由、控制器、视图),因此我将向您展示如何编写第一个选项
首先,我将把组离开逻辑封装到group
模型上自己的方法中,我们将在控制器中使用该方法。在组
中,我们定义分配为新创建者的逻辑。这里的逻辑是,如果我们有方法anew\u creator
,则传递该方法,如果没有给出,则默认传递给第一个成员
class Group < ActiveRecord::Base
def reassign(new_creator = nil)
new_creator ||= members.first
if new_creator
self.creator = new_creator
save
else
false
end
end
end
在您的视图中,您将拥有@group
的表单和新成员候选人(可能带有选择标签:new\u creator\u id
)以及您喜欢的其他用户界面
第三个问题
这是最简单的。您只需这样定义您的关联,在删除用户后,您将销毁所有User
组
class User < ActiveRecord::Base
has_many :groups, foreign_key: :creator_id, dependent: :destroy
end
class用户
你完美地回答了我的问题。非常清晰易懂。谢谢你知道!只要让我知道你是否可以将代码安装到你的应用程序中。别忘了投票/接受等等!;)
class User < ActiveRecord::Base
has_many :groups, foreign_key: :creator_id, dependent: :destroy
end