2012-05-14 12 views
6

は私の団体です:railsのcreated_at列の関連付けのソート方法は?ここ

Class Post 
belongs_to :user 
has_many :favorites, :dependent => :destroy 
has_many :favoriters, :through => :favorites, :source => :user 
end 

Class User 
has_many :posts 
has_many :favorites, :dependent => :destroy 
has_many :favorited, :through => :favorites, :source => :post 
end 

Class Favorites 
belongs_to :user, :post 
end 

私はお気に入り協会ののcreated_atカラムで、ユーザーのお気に入りの投稿をソートしたいです。ただし、これはPost created_at属性でソートされ、Favorites created_at属性ではソートされません。 Favorites created_at属性でソートするにはどうすればよいですか?

@[email protected]('created_at DESC') 
+0

あなたはあなたの質問に言い換えることができますか? – beck03076

答えて

15

order by句で使用する表を指定する必要があります。

@posts = @user.favorited.order('posts.created_at DESC') 

する必要があります。

アソシエーションを検査するときに、レールコンソールを使用するのが良い方法です。具体的には、実行中のActive Recordクエリに対して 'to_sql'メソッドを使用すると便利です。例えば

:セットのデフォルトの順序のためのあなたのポストモデルで

% bundle exec rails console 

> u = User.last 
> u.favorited.order('created_at DESC').to_sql 
+0

偉大な、それは動作します。私の場合、@posts = @ user.favorited.order( 'favorites.created_at DESC')ので、お気に入りのcreated_at属性でソートされます。提案していただきありがとうございます。 –

+0

はうまく動作していないようで、詳細を編集しました –

3

使用これを:

default_scope { order("created_at DESC") } 
関連する問題