Дополнительное поле находится внутри секции соединения.Он не выбран по умолчанию и поэтому не может быть прочитан.При выполнении вашего оператора вы получите что-то вроде следующего SQL-запроса:
SELECT first_models.*
FROM first_models
INNER JOIN (
SELECT SUM(id) AS sum_ids, some_key
FROM second_models
WHERE id < 10000
GROUP BY some_key
) AS second_models
ON first_models.id = second_models.first_model_id
Первый оператор выбора предотвращает доступность поля sum_ids
в вашем объекте, поскольку оно никогда не возвращается в Rails.Вы хотите изменить SELECT first_models.*
на SELECT *
.Это просто делается путем указания следующего выбора:
record = FModel.select(Arel.star).joins(sql).last
record.sum_ids
#=> should now give you your value
Вы также можете добавить свое поле, в частности, используя следующий метод:
f_models = FModel.arel_table
record = FModel.select(f_models[Arel.star]).select('sum_ids').joins(sql).last
Это должно привести к SELECT first_models.*, sum_ids
.