У меня есть удобство область действия, связанные с includes
модели для ускорения рендеринга таблиц и т.д.:Использовать Rails 'select() для добавления (не перезаписывать) выбранных атрибутов?
class Post < ApplicationRecord
...
scope :includes_for_post_row, -> { includes(:reasons).includes(:feedbacks => [:user]) }
Он работает отлично. Теперь, однако, я хотел бы добавить select
дополнительный атрибут. Если бы я уже знал, какие начальные атрибуты, которые я хотел, я мог бы сделать это (в консоли):
2.3.3 :005 > Post.select("`posts`.*, 42 AS column_forty_two").last.column_forty_two
Post Load (1.0ms) SELECT `posts`.*, 42 AS column_forty_two FROM `posts` ORDER BY `posts`.`id` DESC LIMIT 1
=> 42
Это предполагает, что я знаю, что я хочу, чтобы выбрать posts.*
, то я просто лавировать на моей column_forty_two
колонки и все это работает ,
Я хочу добавить column_forty_two
к моим результатам, не затрагивая первоначальный выбор. Например, это должно работать:
p = Post.select("`posts`.*, 8 as column_eight").includes_for_post_row_with_forty_two
p.last.column_forty_two # => 42
p.last.column_eight # => 8
p.last.some_activerecord_property # => value
Как следует это:
p = Post.all.includes_for_post_row_with_forty_two.last
p.last.column_forty_two # => 42
p.last.some_activerecord_property # => value
Как я могу select
дополнительный столбец, не затрагивая или перезаписать существующие столбцы, выбранные по умолчанию, .all
или мои собственные ранее select
?