私は3つのモデルを持っています、、、Hotel
そしてPackage
関連PackagePrice
は次のようなものです:
ホテルには多くのパッケージを含めることができ、各パッケージには 1 つのパッケージ価格があります
モデルは次のとおりです。
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
フィルタリングしたいと思います。ですから、このクエリを見つけるのを手伝ってください。@hotels
price
asc or desc