- 1
- 2
- 3
- 4
def properties
Hash.send :[], *(self.class.column_names & self.class::PROPERTIES).
inject([]) { |a, p| a << p.to_sym << send(p) }
end
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
−93
def properties
Hash.send :[], *(self.class.column_names & self.class::PROPERTIES).
inject([]) { |a, p| a << p.to_sym << send(p) }
end
это же очевидно
abbbbbbbbbb 29.09.2011 11:22 # 0
LeshaXakir 29.09.2011 12:33 # 0
abbbbbbbbbb 29.09.2011 13:58 # 0
(self.class.column_names & self.class::PROPERTIES).inject({}) { |a, p| a[p.to_sym] = send(p);a }
Или так
res = {}
(self.class.column_names & self.class::PROPERTIES).each{ |p| res[p.to_sym] = send(p) }
res
Или так
Hash[(self.class.column_names & self.class::PROPERTIES).map{ |p| [p.to_sym,send(p)] }]
LeshaXakir 29.09.2011 14:09 # 0
2 Похапе-хардкор
3 Hash::[] принимает *args, а не массив. Тут ему аж двумерный отправится
abbbbbbbbbb 29.09.2011 14:29 # 0
2. Тоже согласен.
3. Работать будет http://www.ruby-doc.org/core/classes/Hash.html#M000716
Третий вариант - код с рельс, кстати.
Но сабж конечно - жесть.
gegMOPO4 29.09.2011 20:29 # −1
LeshaXakir 30.09.2011 11:27 # +1