はActiveRecordの関連付けから特定の列のみを要求することはできますか?
def Foo
has_one :user
end
考えるのは、他の列のいずれかの私はFoo
のUser
の名前をしたいと言って、ないようにしましょう。私は1つの列のみを取得するために、関連付けを使用するための任意の滑らかな方法がある
SELECT name FROM "users" WHERE "prices"."id" = 123
をしたいが、foo.user.name
を行うと、私に
SELECT * FROM "users" WHERE "prices"."id" = 123
を与えるのだろうか?これまでわずかな値を返します
User.select(:name).where(...)
:あなたが好き、.selectメソッドを使用して選択したい列を指定することができます
User.where(id: foo.user_id).pluck(:name).first
これは代表的な範囲ですか?スコープは、通常、ActiveRecord :: Relationを返します。メソッドはより適切でしょうか(またはデリゲート?) – MrYoshiji
これはActiveRecordクエリメソッドのチェーンなので、関係を返すと思います。代わりにBarクラスに構築されたリレーションを返すというのは奇妙なことですFooクラスの - しかし、一度あなたは '何かに行ってきた。メソッドを定義することも、これを達成するための良い方法です。私はこのようなことをする必要は決してありませんでした。だから、どちらが良いか、なぜそうなのか、という基準の枠は本当にありません。 – Andrew