【发布时间】:2013-09-24 17:02:06
【问题描述】:
我有三个模型Hotel、Package、PackagePrice,关联如下:
酒店可以有多个套餐,每个套餐有一个套餐价格
型号是:
class Hotel < ActiveRecord::Base
attr_accessor :excel_sheet, :excel_sheet_file_name
attr_accessible :hotel_name, :stars, :location, :searchable, :excel_sheet, :excel_sheet_file_name
has_many :package_prices, :dependent => :destroy
has_many :packages, :through => :package_prices, :order => 'package_prices.price'
end
class Package < ActiveRecord::Base
attr_accessible :package_name
has_many :package_prices, :dependent => :destroy, :order => 'price DESC'
has_many :hotels, :through => :package_prices, :order => 'package.package_prices.price'
end
class PackagePrice < ActiveRecord::Base
attr_accessible :price, :package_id, :hotel_id
belongs_to :package
belongs_to :hotel
end
对应的表格是:
mysql> desc hotels
-> ;
+------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| hotel_name | varchar(255) | YES | | NULL | |
| stars | varchar(255) | YES | | NULL | |
| location | varchar(255) | YES | | NULL | |
| created_at | datetime | NO | | NULL | |
| updated_at | datetime | NO | | NULL | |
| searchable | tinyint(1) | YES | | 1 | |
+------------+--------------+------+-----+---------+----------------+
7 rows in set (0.00 sec)
mysql> desc packages;
+--------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| package_name | varchar(255) | YES | | NULL | |
| created_at | datetime | NO | | NULL | |
| updated_at | datetime | NO | | NULL | |
+--------------+--------------+------+-----+---------+----------------+
4 rows in set (0.00 sec)
mysql> desc package_prices;
+------------+----------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------+----------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| package_id | int(11) | YES | | NULL | |
| price | int(11) | YES | | NULL | |
| created_at | datetime | NO | | NULL | |
| updated_at | datetime | NO | | NULL | |
| hotel_id | int(11) | YES | | NULL | |
+------------+----------+------+-----+---------+----------------+
我在变量@hotels 中有酒店记录,我想按asc or desc 顺序按price 过滤此@hotels。所以请帮我找出这个查询。
【问题讨论】:
-
如果每家酒店可以有多个价格,您想使用哪个价格进行排序?
-
@Slicedpan 我想按价格从低到高对酒店进行排序
标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.2 associations