Ruby on rails 3 如何在rails中将单例对象传递给部分对象?

Ruby on rails 3 如何在rails中将单例对象传递给部分对象?,ruby-on-rails-3,metaprogramming,singleton-methods,Ruby On Rails 3,Metaprogramming,Singleton Methods,我的控制器中有以下代码 @current_chat = current_user.sent_messages .where("created_at > ? and receiver_id = ?", current_user.current_sign_in_at, current_chat[:receiver_id].to_i) .select("body, created_at").eac

我的控制器中有以下代码

@current_chat = current_user.sent_messages
                         .where("created_at > ? and receiver_id = ?", current_user.current_sign_in_at, current_chat[:receiver_id].to_i)
                         .select("body, created_at").each { |message| message.instance_eval { def type; @type end; @type = 'sent' } }
我将@current_chat对象传递给一个partial,如下所示:

<%= render partial: 'shared/chat_form', locals: { messages: @current_chat } %>
在ActiveSupport::MessageVerifier#generate中的第一行

有没有办法解决这个问题?。提前谢谢。

您不能使用此功能

@serializer.dump(value)
这是导致错误的原因。阅读此链接,了解如何在ruby中使用单例。

我没有使用它。这是rails的源代码。我在问题中提到了模块和类。有什么办法可以避免吗?一旦为对象创建了单例类,就不能再对该对象使用Marshal.dump。封送处理库不支持具有单例类的对象。实际上,我想将查询
当前用户返回的记录标记为“已发送”。你知道如何在不使用instance_eval的情况下做到这一点吗?
def generate(value)
  data = ::Base64.strict_encode64(@serializer.dump(value))
  "#{data}--#{generate_digest(data)}"
end
@serializer.dump(value)