1
我有一个具有以下关系的消息模型:使用class_eval覆盖关联
belongs_to :sender, Class: "User"
belongs_to :recipient, Class: "User"
我试图使用class_eval覆盖在某些情况下,收件人的方法。
这工作:
def update_recipient(message, recipient_addition = nil)
message.class_eval <<-EVAL
def recipient
"test"
end
EVAL
end
message.recipient => “测试”
然而,这并不:
def update_recipient(message, recipient_addition = nil)
message.class_eval <<-EVAL
def recipient
[#{message.recipient}, #{recipient_addition}]
end
EVAL
end
(eval):3: syntax error, unexpected keyword_end, expecting ']'
什么,在你看来,是返回与用户对象为显示数组的最佳方式? – user577808 2012-07-30 12:58:32
那些看起来像是你正在返回的对象,所以如果你想返回_string_值,可以像'[message.recipient.email,recipient_addition.email]'(假设他们有电子邮件属性)。如果你想返回_objects_,直接通过'[message.recipient,recipient_addition]' – 2012-07-30 13:36:28
直接返回。不幸的是,recipient_addition不在该class_eval块的范围内。 – user577808 2012-07-30 13:51:37