Skip to content

Cannot get single table inheritance work #54

@0000sir

Description

@0000sir

Thank you for your work, it a great gem. But I have some issue while using single table inheritance. Models are listed below:

class User < ActiveRecord::Base
  groupify :group_member, group_class_name: 'Department'
end

class Group < ActiveRecord::Base
  groupify :group
end

class GroupMembership < ActiveRecord::Base
  groupify :group_membership
end

class Department < Group
  has_ancestry
  has_members :users
  
  def add_employee(u)
    self.add u, as: :employee
  end
  
  def add_manager(u)
    self.add u, as: :manager
  end
  
  def remove_employee(u)
    u.groups.delete self
  end
  
  def remove_manager(u)
    u.groups.delete self
  end
  
end

I can add a user to a department as well, but when I trying to delete it from the department, it not works, and the sql is:

DELETE FROM "group_memberships" WHERE "group_memberships"."member_id" = ? AND "group_memberships"."member_type" = ? AND "group_memberships"."group_type" = 'Group' AND "group_memberships"."group_id" = 1 AND "group_memberships"."group_type" = ?  [["member_id", 1], ["member_type", "User"], ["group_type", "Group"]]

But the relationship generated in group_memberships, the group_type is Department, so nothing happened after the deletion sql.

This also happens while retrieving department members, department.users runs this sql:

SELECT DISTINCT "users".* FROM "users" INNER JOIN "group_memberships" ON "users"."id" = "group_memberships"."member_id" WHERE "group_memberships"."group_id" = ? AND "group_memberships"."group_type" = ? AND "group_memberships"."member_type" = 'User' AND "group_memberships"."membership_type" = ?  [["group_id", 1], ["group_type", "Group"], ["membership_type", :manager]]

It wont find anything because of wrong group_type, can you give more detail of using single table inheritance? It would be a big help, thank you

Metadata

Metadata

Assignees

Labels

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions