rails 3.2和acts_as_paranoid的has_many直通问题



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

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_recipient记录。但是,如果我执行上面的代码删除acts_as_paranoidgem,那么它就可以正常工作。有什么办法可以解决这个问题吗?

解决方案1:我们可以在消息模型上使用create,而不是在消息模型中调用new。因此,记录将被创建,然后我可以将数据推送到收件人内部。这就像创建父记录,并使用其id创建子记录。所以没有必要触发,而且效果很好。

欢迎提出建议

它与轨道3.2.12配合良好,但与轨道3.2.13配合失败。我对这种行为感到困惑。

相关内容

  • 没有找到相关文章