If rec is an active record object and you call rec.attribute_names, it gives you the field names in alphabetical order. If there is a way to get the order that the fields where created into the dabatase on the create_table sql call, I would find that very useful. It seems like there is supposed to be a columns(), and column_names() methods, but I am not seeing them and wondering if they maybe disappeared in rails 3 ?
I wrote this for now, a terrible hack
def get_order str = self.inspect ar = str.split(',') ar[0] = ar[0].gsub(/^\S*/,'') ar[ar.length - 1] = ar.last.chop puts 'ar' p ar ar2 = ar.map{|el| el.split(":")[0].strip} puts 'ar2' p ar2 del_idxs = ar2.each_with_index do |el,idx| if !self.attribute_names.include?(el) del_idxs << idx end end puts 'del idx' puts "\n\n\n" del_idxs.each{|i| ar2.delete_at(i)} ar2 end
Jedrin wrote in post #1016808:
If rec is an active record object and you call rec.attribute_names, it gives you the field names in alphabetical order. If there is a way to get the order that the fields where created into the dabatase on the create_table sql call, I would find that very useful.
How?
column_names is the one you’re looking for, it is a class method, so you should use it like Model.column_names