【发布时间】:2012-07-30 11:01:52
【问题描述】:
我有一个具有以下关系的消息模型:
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 ']'
【问题讨论】:
标签: ruby ruby-on-rails-3 metaprogramming