dwbutler / groupify

Add group and membership functionality to your Rails models
MIT License
194 stars 42 forks source link

ActiveRecord::RecordInvalid: Validation failed: Group must exist #75

Open denniswoot opened 5 years ago

denniswoot commented 5 years ago

Hi, I am using the groupify gem. And encountered some errors when I would like to use named_groups. I have tried the following solution. I am using rails 5.1

https://github.com/dwbutler/groupify/issues/57

a = User.find 1 => #<User id: 1, email: "dennis@ibm.com", created_at: "2018-12-13 10:25:57", updated_at: "201 8-12-13 10:25:57">

a.groups

ActiveRecord::RecordInvalid: Validation failed: Group must exist

class GroupifyMigration < ActiveRecord::Migration[5.1]
  def change
    create_table :groups do |t|
      t.string     :name
    end

    create_table :group_memberships do |t|
      t.references :member, polymorphic: true, index: true, null: false
      t.references :group, polymorphic: true, index: true

      # The named group to which a member belongs (if using)
      t.string     :group_name, index: true

      # The membership type the member belongs with
      t.string     :membership_type
      t.timestamps
    end
  end
end

  # Include default devise modules. Others available are:
  # :confirmable, :lockable, :timeoutable, :trackable and :omniauthable
  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :validatable

  has_one :membership
  has_many :forms

  groupify :named_group_member
  groupify :group
  after_save :create_default_membership

  def create_default_membership

  user = self.build_membership
  #user.membership_name = 'Member'
  user.admin = 1
  user.save
  end

end
meatherly commented 4 years ago

@pietjepuk111 I think this is because of the new ActiveRecord settings with Rails >5 you can fix this by adding self.belongs_to_required_by_default = false to your GroupMembership model.