je modèle à trois Hotel
, Package
, PackagePrice
et d'association sont comme:tri complexe association en rails3
Hôtel peut avoir de nombreux forfaits et chaque paquet a un packageprice
modèles sont:
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
et les tables correspondantes sont:
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 | |
+------------+----------+------+-----+---------+----------------+
Et j'ai des dossiers d'hôtels dans une variable @hotels
et je veux filtrer ce @hotels
par price
dans asc or desc
ordre. Alors s'il vous plaît aidez-moi à trouver cette requête.
Si chaque hôtel peut avoir plusieurs prix, quel prix voulez-vous utiliser pour trier? – Slicedpan
@Slicedpan Je veux trier les hôtels par prix du plus bas au plus élevé –