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
模型上自己的方法中,我们将在控制器中使用该方法。在
中,我们定义分配为新
创建者的逻辑。这里的逻辑是,如果我们有方法a
new\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