【发布时间】:2014-12-30 15:36:31
【问题描述】:
我试图通过迭代一个常量哈希来减少我的 Ruby 类中的代码量,以便以减少的编码量生成所有想要的方法。
这是我的代码(请随意添加其他指针,因为我是 Ruby 新手):
ENTRY_HASHES = {
"disbursement" => {
:description => TRANSACTION_DESCRIPTIONS[:disbursement]
}
}
public
ENTRY_HASHES.each do |key, value|
def "#{value}?(amount)"
single_entry(
ENTRY_HASHES[:description]
amount
)
@entry.save
end
end
我对上面的期望是这样的(对于 ENTRY_HASHES 中的每个哈希):
def disbursement?(value)
single_entry(
"XXXXX",
amount
)
end
相反,我遇到了语法错误。任何帮助将不胜感激!
【问题讨论】:
-
你不在这里。嗯,你是对的,但并不完全正确。你需要
define_method方法来实现你的目标
标签: ruby ruby-on-rails-4 metaprogramming interpolation