我正在建造一个酒店应用程序,我想按照它最便宜的房间价格对所有酒店进行分类,但我似乎无法实现我的目标。
Roomtype Model>>
class Roomtype < ActiveRecord::Base
mount_uploader :image, RimageUploader
belongs_to :hotel
has_many :order_items
default_scope { order(:price => :desc)}
end
酒店模特&gt;&gt;
class Hotel < ActiveRecord::Base
has_many :roomtypes, -> { order(:price => :desc) }
has_many :hotel_images
belongs_to :destination
belongs_to :area
accepts_nested_attributes_for :hotel_images
def price
price = self.roomtypes.last.price
end
end
我需要default_scope
酒店按Hotel.find(params[:id]).roomtypes.last.price
答案 0 :(得分:1)
按升序排列所有以最便宜的房型价格排序的酒店。
class Hotel < ActiveRecord::Base
has_many :roomtypes
default_scope { joins(:roomtypes).group("roomtypes.hotel_id").order("sum(roomtypes.price) asc") }
end
注意: Roomtypes表是| hotel_id |价格| 您可以根据代码要求更改属性名称。
提供帮助答案 1 :(得分:0)
class Roomtype < ActiveRecord::Base
mount_uploader :image, RimageUploader
belongs_to :hotel
has_many :order_items
default_scope { order(:price => :desc)}
end
我认为default_scope订单应该是升序的,因为您希望价格从小到大排序。
default_scope { order(:price => :asc)}
然后Hotel.first.room_types
会给你想要的结果。
答案 2 :(得分:0)
首先,房间类型按价格排序
class Roomtype < ActiveRecord::Base
belongs_to :hotel
default_scope { order(:price => :desc)}
end
因此,酒店last roomtype
是cheapest
。
我得到了我想要的东西; sorting the list of Hotels by it's cheapest roomtype
使用数组
class HotelsController < ApplicationController
def index
@hotels = Hotel.all.sort_by{ |u| u.roomtypes.last.price }
end
end
这对我来说是最好的解决方案!