Search code examples
ruby-on-railsrubyruby-on-rails-3ruby-on-rails-4ruby-on-rails-3.2

Rails: How to use dependent: :destroy in rails?


I have 2 models as describes below.

class EmpGroup < ActiveRecord::Base
  belongs_to :user
  has_many :emp_group_members, dependent: :destroy
end

and

class EmpGroupMember < ActiveRecord::Base
  belongs_to :emp_group
  belongs_to :user
end

now the problem is whenever I tried to destroy a group then I received a error as below.

PG::ForeignKeyViolation: ERROR:  update or delete on table "emp_groups" violates foreign key constraint "fk_rails_bd68440021" on table "emp_group_members"
DETAIL:  Key (id)=(1) is still referenced from table "emp_group_members".

What I'm missing?


Solution

  • Add cascading delete to your EmpGroup model:

    class EmpGroup < ActiveRecord::Base
       has_many :emp_group_members, dependent: :delete_all
    end
    

    Or

    Are you calling delete method? you should call destroy instead. Use .destroy