我面临一种奇怪的行为。这是我的情景。
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_paranoid gem,那么它工作正常。有没有解决这个问题的工作?
解决方案1: 我们可以在Message模型上使用 create ,而不是在Message模型上调用 new 。所以记录将被创建,然后我可以将数据推送到收件人。就像创建父记录和使用其ID我创建子记录。所以没有必要进行trigerring,它运行正常。
欢迎提出建议。
答案 0 :(得分:0)
使用rails 3.2.12可以正常工作但是使用rails 3.2.13失败了。我对这种行为感到困惑。