Я не уверен, возможно ли это или даже предпочтительнее
Но я бы хотел построить отношение has_many или условное отношение типа named_scope, чтобы облегчить мою боль в одном простом отношении вместо двух.
В настоящее время у меня есть две модели, которые в основном содержат одну и ту же информацию и принадлежат к одним и тем же комнатам моделей через один и тот же ключ room_id, но хранят данные двумя различными способами. Один содержит конкретную информацию на конкретную дату, а второй общий ставки для дней недели. Основное препятствие заключается в том, что доступные данные могут вообще не содержать информации для конкретной записи, и в этом случае ей необходимо отложить для room_rates средние значения, а не конкретные цены на данную дату.
Какие-нибудь указатели или предложения? Спасибо
1009 * Доступные *
+--------+-------+-------+------------+---------+-----+
| id | price | spots | bookdate | room_id | min |
+--------+-------+-------+------------+---------+-----+
| 180315 | 14.4 | 1 | 2010-02-27 | 2517 | 1 |
| 231726 | 15.84 | 1 | 2010-03-24 | 2517 | 1 |
| 180311 | 14.4 | 1 | 2010-02-23 | 2517 | 1 |
| 180313 | 14.4 | 1 | 2010-02-25 | 2517 | 1 |
+--------+-------+-------+------------+---------+-----+
Room_rates
+-------+---------+-----------+-------+-----+
| id | room_id | dayofweek | price | min |
+-------+---------+-----------+-------+-----+
| 87936 | 2517 | 0 | 14.58 | 1 |
| 87937 | 2517 | 1 | 14.58 | 1 |
| 87938 | 2517 | 2 | 14.52 | 1 |
| 87939 | 2517 | 3 | 14.52 | 1 |
| 87940 | 2517 | 4 | 14.52 | 1 |
| 87941 | 2517 | 5 | 14.4 | 1 |
| 87942 | 2517 | 6 | 14.63 | 1 |
+-------+---------+-----------+-------+-----+
Или, возможно, метод finder_sql? Такие как:
has_many :aggregates,
:class_name => 'Available',
:finder_sql => 'SELECT room_id, price, spots, bookdate, MIN(source)
FROM availables
WHERE room_id = #{id}
GROUP BY room_id, price, spots, bookdate'
Но также необходимо заполнить пропущенные записи для несуществующих закладок, присоединившись к room_rates