我試圖根據其順序屬性中的值向類公開一些方法,可能類似於['top', 'bottom', 'right', 'lower-right']
。Ruby:基於模型屬性的元編程方法
首先,我班從陣列任何響應空白像這樣刪除:
def order
order.split(' ').delete_if do |o|
send(o).blank? if respond_to? o
end
end
在那之後,我要「揭發」 top
(例如的緣故),作爲類中的方法。
order.each do |o|
V1_ATTRIBUTES << o.to_sym
define_method(o) do |a|
send(a).blank? ? '' : send(a)
end
end
但o
上課的時候不instantialised,一拉沒有定義:
<NameError: undefined local variable or method `o' for #<Class:#<APIDocument:0x007fb8123609f8>>>
任何人有一個更好的取得任何成功,我在initialize
方法嘗試這樣的東西方法來獲得這個結果?
注意:我知道允許用戶編寫實例方法名稱並不是很好的做法,但在這種情況下,安全和破壞不是問題。
實現方法'order'時是否存在無限遞歸? – Aetherus
不,這個帖子被簡化了。 :) –