Postgresql / Rails 3 / Ruby 1.9.2 / OSX
class Deliverable < ActiveRecord::Base
has_many :models, :dependent => :destroy
def build_template
models << sect_letterhead << sect_ica << sect_project_description_exhibit
end
end
ruby-1.9.2-p180 :002 > d.models.first
=> #<Model id: 1, company_id: nil, deliverable_id: 1, model_id: nil, type: nil, kind: "cover_page", csv_file_name: nil, csv_content_type: nil, csv_file_size: nil, csv_updated_at: nil>
ruby-1.9.2-p180 :003 > d.models.first.update_attribute(:csv_file_name, "blah")
=> true
ruby-1.9.2-p180 :004 > d.models.first
=> #<Model id: 5, company_id: nil, deliverable_id: 1, model_id: nil, type: nil, kind: "opening_letter", csv_file_name: nil, csv_content_type: nil, csv_file_size: nil, csv_updated_at: nil>
Всякий раз, когда я обновляем_attribute модель, эта модель помещается в конец массива. Есть ли другой способ, кроме назначения специального атрибута сортировки, чтобы избежать изменения порядка массива при вызове update_attribute? Я мог бы довольно легко сделать это, но меня интересует поведение базы данных.
Даже когда я удаляю метки времени из модельного объекта, поведение остается.
Как это происходит, если нет меток времени, чтобы отслеживать, какая модель была только что обновлена? Или модель фактически вытаскивается из массива и возвращается в последнюю позицию, когда я вызываю update_attribute?