0

アカウントとサブスクリプションの 2 つのテーブルがあります。すべてのアカウントにサブスクリプションがあり、私がそうするとき

Account.last.subscription.name
  Account Load (0.4ms)  SELECT "accounts".* FROM "accounts" ORDER BY "accounts"."id" DESC LIMIT 1
  Subscription Load (0.2ms)  SELECT "subscriptions".* FROM "subscriptions" WHERE "subscriptions"."account_id" = 73 LIMIT 1
"free"

しかし、無料に設定されているすべてのアカウントを取得しようとしています。

4

1 に答える 1

3

あなたの質問には詳細がほとんどないため、いくつかの仮定を立てる必要があります。Subscriptionブールfree列があるとしましょう。

# Rails 4
Account.joins(:subscriptions).where(free: true).references(:subscriptions)

# Rails 3
Account.joins(:subscriptions).where('subscriptions.free = ?', true)

freeが Account 属性であると仮定すると、次のようになります。

Account.where(free: true)

サブスクリプションの詳細を取得する場合は、次のようにします。

Account.where(free: true).includes(:subscriptions)
于 2013-07-11T20:42:09.110 に答える