2017-04-01 14 views
0

私はホテルのアプリケーションを構築していますが、私はすべてのホテルを最も安い価格で並べ替えることを望みますが、私は目標を達成できないようです。並べ替えには多くの関連があります

Roomtypeモデル>>

class Roomtype < ActiveRecord::Base 
    mount_uploader :image, RimageUploader 
    belongs_to :hotel 
    has_many :order_items 
    default_scope { order(:price => :desc)} 
end 

ホテルモデル>>

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 

私はHotel.find(params[:id]).roomtypes.last.price

答えて

0

によって助けました。

私はまさに私が望むものを得ました。配列

​​

これは私のために最適なソリューションですの使用とをソートすることによりsorting the list of Hotels by it's cheapest roomtype

0
によってソートするホテル default_scopeを必要とします

価格が小から大にソートされるようにするため、default_scopeのオーダーは昇順にする必要があります。

default_scope { order(:price => :asc)} 

次に、Hotel.first.room_typesはあなたが望む結果を与えるはずです。

+0

私はルームタイプのソーティングについて話していません –

+0

私は**ホテルは格安部屋タイプで並べ替えたいです** –

+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 |価格| コード要件に従って属性名を変更することができます。

はまずRoomtypesが

class Roomtype < ActiveRecord::Base 
    belongs_to :hotel 
    default_scope { order(:price => :desc)} 
end 

だから、ホテルlast roomtypecheapestある価格でソートされるDixit Patel

関連する問題