rails:3486
From: Andy Matsubara <andymatsubara@g...>
Date: Fri, 1 Oct 2010 15:06:34 +0900
Subject: [rails:3486] Re: habtm で追加した順序は保障されるか?
そもそもidが増えていくことは保証されていないと思います。実際auto incrementになっていて 途中に空き番があったときにそこを使われることはありますし。 追加順にしたいのならタイムスタンプなどのフィールドを使って並べる必要があります。 Andy 2010/10/1 naopontan <naopontan@g...>: > こんにちは。 > > User と Entry が has_and_belongs_to_many(habtm)で多対多の関係です。 > この場合、 > @entry.users << @taro > @entry.users << @jiro > の順番は保障されるのでしょうか? > > class Entry < ActiveRecord::Base > has_and_belongs_to_many :users, :order => "id ASC", :uniq => true > end > > class User < ActiveRecord::Base > has_and_belongs_to_many :entries > end > > 勝手に保障されると思っていて、逆転現象の不具合が出たので > 「:order => "id ASC"」がバグだ!って思ったんですけど、 > 以下のテストを書いてみたら、:order を指定してもしなくてもテストが通ってしまいます。 > あれ?何で?って感じです。 > > def test_my_group_order > entry = entries(:entry1) > > entry.users.clear > entry.users << users(:taro) > entry.users << users(:jiro) > assert_equal [users(:taro), users(:jiro)], entry.users > > entry.users.clear > entry.users << users(:jiro) > entry.users << users(:taro) > assert_equal [users(:jiro), users(:taro)], entry.users > end > > この辺りのご助言頂ければ幸いです。 > > -- > ML: rails@r... > 使い方: http://QuickML.com/ > -- ML: rails@r... 使い方: http://QuickML.com/
3484 2010-10-01 07:35 [naopontan@g... ] habtm で追加した順序は保障されるか? -> 3486 2010-10-01 08:06 ┗[andymatsubara@g... ] 3487 2010-10-02 03:45 ┗[naopontan@g... ]