has_many through issue with rails 3.2 and acts_as_paranoid

266 Views Asked by At

I am facing a weird behaviour. This is my scenario.

class Message <  ActiveRecord::Base
  belongs_to :user, :foreign_key => "from_user_id"
  has_many :message_recipients, :include => [:user], :dependent => :destroy
  has_many :recipients, :through => :message_recipients, :source => :user
end    

class MessageRecipient < ActiveRecord::Base
  belongs_to :user
  belongs_to :message, :include => :message_recipients
end

class User < ActiveRecord::Base
  acts_as_paranoid
  has_many :message_recipients
end

I am creating a new message and pushing value to its recipients.

@message=Message.new(:body => "Hi",:from_user_id => session[:user])
@message.recipients.push(User.find(params[:message_recipient_id]))
@message.save

The above operation saves the record in message correctly but fails to trigger the message_recipient record. But if i perform the above code removing the acts_as_paranoid gem, then it works fine. Is there any work around to solve this issue?

Solution 1: Instead of calling new on Message model we can use create on Message model. So the record will be created and then i can push the data inside the recipients.Its like creating parent record and using its id i am creating child record. So there is no need for trigerring and it works fine.

Suggestions are welcome.

1

There are 1 best solutions below

0
On

It works fine with rails 3.2.12 but fails with rails 3.2.13. I am confused with this behaviour.