私はなど、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
これは私が、私はちょうど私のcolumn_forty_two
列にタック、私はposts.*
を選択したい知っていることを前提とし、それすべての作品。
最初の選択に影響を与えずに、結果に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
をどのように影響するか.all
や私自身のことで、デフォルトで選択された既存の列を上書きせずにI select
追加列、先にselect
?