我有這樣的模式:重構這個Ruby和Rails代碼
class Event < Registration
serialize :fields, Hash
Activities=['Annonce', 'Butiksaktivitet', 'Salgskonkurrence']
CUSTOM_FIELDS=[:activity, :description, :date_from, :date_to, :budget_pieces, :budget_amount, :actual_pieces, :actual_amount]
attr_accessor *CUSTOM_FIELDS
before_save :gather_fields
after_find :distribute_fields
private
def gather_fields
self.fields={}
CUSTOM_FIELDS.each do |cf|
self.fields[cf]=eval("self.#{cf.to_s}")
end
end
def distribute_fields
unless self.fields.nil?
self.fields.each do |k,v|
eval("self.#{k.to_s}=v")
end
end
end
end
我有一種感覺,這是可以做到更短,更優雅。有人有想法嗎?
- 雅各
BTW。任何人都可以告訴我CUSTOM_FIELDS前的星號是幹什麼的?我知道它的方法定義(DEF foo的(*參數)),但不是在這裏......
我認爲這個問題在適合更好的代碼審查(http://codereview.stackexchange.com/ - 測試版現在處於活動狀態!) – ecoologic 2011-01-20 23:10:00