l0pez
1
W modelu mam taki kod:
[code=ruby]def numberA=(numberA)
write_attribute(:numberA, numberA.gsub(/\D/, “”))
end
def numberB=(numberB)
write_attribute(:numberB, numberB.gsub(/\D/, “”))
end
def numberC=(numberC)
write_attribute(:numberC, numberC.gsub(/\D/, “”))
end[/code]
Jak to skrócić do jednego defa?
apohllo
2
def set_number(value,name)
write_attribute(name,value.gsub(/\D/,""))
end
Można też zrobić za pomocą method_missing, ale czy warto?
Arnvald
3
Ewentualnie define_method
wafcio
4
Można wykorzystać meta programowanie, na podobnej zasadzie jak niektóre metody generowane są w gemie acts_as_list.
apohllo
5
Tak, można co najmniej na 10 sposobów http://apohllo.pl/dydaktyka/ruby/intro/metaprogramowanie Tylko jeszcze raz pytam - czy to faktycznie ma swoje uzasadnienie?