Rails:Mail :: Message对象不显示message_id属性

时间:2015-02-27 09:42:40

标签: ruby-on-rails ruby lazy-loading

我有一个通过以下方式创建的Mail :: Message对象:

   mail_message_object = mailer.send(method_symbol, *parameters)

这里method_symbol指定邮件的类型。现在,我的问题是,当尝试使用这个特定的mail_message_object的message_id时,它显示我没有。

    mail_message_object.message_id --> nil

但如果我这样做:

    mail_message_object.to_s

    puts mail_message_object

如果我尝试访问message_id,它会向我显示正确的message_id。

    mail_message_object.message_id ---> 54f033bb1159a_1beec30f78570bd@samarth.mail

我不明白这里发生了什么。

1 个答案:

答案 0 :(得分:0)

这似乎是有意的。您必须致电#encoded#to_s内部也会这样做)才能获得message_id

  

MessageIdField对象将自动生成唯一的消息ID   如果您尝试编码或输出to_s而不指定   消息ID。

https://github.com/mikel/mail/blob/master/lib/mail/message.rb#L1426

此行为允许您设置自定义消息ID。因此,如果您需要生成的ID,最简单的方法就是之前调用mail_message_object.encoded,就像您已经做过的那样。