0

我正面临一种奇怪的行为。这是我的场景。

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

我正在创建一条新消息并向其接收者推送价值。

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

上述操作正确保存了message中的记录,但未能触发message_recipient记录。但是,如果我执行上述代码删除acts_as_paranoid gem,那么它工作正常。有什么办法可以解决这个问题吗?

解决方案 1:我们可以在 Message 模型上使用create , 而不是在 Message 模型上调用new。因此将创建记录,然后我可以将数据推送到收件人中。就像创建父记录并使用它的 id 我正在创建子记录一样。所以不需要触发,它工作正常。

欢迎提出建议。

4

1 回答 1

0

它适用于 rails 3.2.12,但适用于 rails 3.2.13。我对这种行为感到困惑。

于 2013-07-29T11:02:33.090 回答