Ruby on rails 如何计算mailboxer gem的邮件数
hi-am使用优点向通过邮箱发送邮件的用户授予徽章。 我已经设置了mailboxer,它可以正常工作,用户可以进行对话并互相发送消息。 从这一点上,我增加了一个优点,即向发送类似消息的用户授予徽章Ruby on rails 如何计算mailboxer gem的邮件数,ruby-on-rails,ruby,Ruby On Rails,Ruby,hi-am使用优点向通过邮箱发送邮件的用户授予徽章。 我已经设置了mailboxer,它可以正常工作,用户可以进行对话并互相发送消息。 从这一点上,我增加了一个优点,即向发送类似消息的用户授予徽章 grant_on 'messages#create', badge: 'Engraved Glass', to: :user do |message| message.user.messages.count >= 50 end 但每当我创建新消息时,我都会遇到这个错误 unde
grant_on 'messages#create', badge: 'Engraved Glass', to: :user do |message|
message.user.messages.count >= 50
end
但每当我创建新消息时,我都会遇到这个错误
undefined method `user' for true:TrueClass
但是当它在一个旧的对话中发送消息时,它不会抛出这个错误,这有点棘手。当您使用更严格的设置时,例如注释模型、注释控制器和@Comment对象,那么您的建议就可以了。但因为这是一个messages_控制器,谁知道你的mailboxer对象叫什么,而且:user无论如何都不是对象上的属性。。一切都乱了套 但我们可以解决它。如果模型和控制器不同,这里有几个规则
@message=current\u user。send\u message(发送给用户,参数[:message][:message\u body],参数[:message][:subject])
-必须是使用@符号的实例变量:receiver
:接收器
不直接与模型对齐,请为其指定模型名称模型名称
“用户”grant_on 'messages#create', badge: 'Engraved Glass', to: :receiver, model_name: "User" do |message|
message.receiver.messages.count >= 50
end
在我的消息#create controller中,我有这样一个`recipients=User.where(id:params['recipients'])conversation=current_User.send_消息(recipients,params[:message][:body],params[:message][:subject])。会话flash[:success]=“message has sent!”重定向到会话路径(conversation)`那么我如何根据你的建议存档它呢@trhl就像我说过的关于命名约定的期望一样,它期望messages\u controller呈现一个
@message
对象-在一个实例变量中,你在一个局部变量中有一个conversation
对象。因此,将对话更改为@message
,然后在重定向更改中也进行相同的更改,但没有人被授予徽章,我只希望发件人被授予徽章,而不是收件人messages
返回收据,就像说这是一封已发送的邮件。因此,发送消息的接收者实际上就是发送消息的人令人困惑的是,我知道:)但是如果你检查其中一个对象(user.messages.first.inspect)-它看起来会像邮箱:收据id:114,接收者id:1,接收者类型:“用户”,通知id:57,读起来是:真,垃圾:假,删除:假,邮箱类型:“sentbox”,创建时间:“2016-04-08 17:54:53”,更新时间:“2016-04-08 17:54:53”--您会注意到没有发送方和接收方,因为这只是发送方