如何创建范围以按FavoritePhoto id排序:在has_many / through模型关联中

时间:2016-07-07 20:23:34

标签: ruby-on-rails scope

我有模型Favorite_Photo,用户和照片

在Heroku控制台中:

u = User.find(1)
u.favorites.last 
=> #<Photo id: 37, user_id: 1, picture: "th.jpeg", title: "Cookies & Cream Pocky ", description: nil, photo_type: nil, location_type: nil, remote_picture_url: nil, created_at: "2016-07-07 03:04:03", updated_at: "2016-07-07 03:04:03">

如果我查询:

u = User.find(1)
u.favorite_photos.last
=> #<FavoritePhoto id: 87, photo_id: 12, user_id: 1, created_at: "2016-07-07 19:37:28", updated_at: "2016-07-07 19:37:28"> 

类用户

has_many :favorite_photos
has_many :favorites, through: :favorite_photos, source: :photo

班级照片

has_many :favorite_photos
has_many :favorited_by, through: :favorite_photos, source: :user

class FavoritePhoto

belongs_to :user
belongs_to :photo
validates :user_id, uniqueness: { 
scope: [:photo_id],
message: 'can only favorite an item once'
} 

UsersController

def show
  @user = User.find(params[:id])
  @favorites = @user.favorites
end

这将返回由photo_id排序的收藏夹列表。我想创建一个范围,根据FavoritePhoto id:

订购收藏夹

1 个答案:

答案 0 :(得分:1)

{{1}}

参考:scopes for has_many