1

私が3つのテーブルを持っていると考えてください:ユーザー(has_many)->ウェブサイト(has_many)->訪問。単純なSQLコードを記述せずに、各ユーザーの合計訪問数をどのように知ることができますか?

mysqlの代わりにrailsに計算を行わせるので、私はあまり誇りに思っていないという考えを持っています。

count = 0
user.websites.each |website|
    count += website.visits.count()

私はレールに慣れていないので、ドキュメントが不足している可能性があります。クエリビルダーからその数を見つけることは可能ですか?

4

1 に答える 1

0

次のように、ユーザーがWebサイトを介して多くの訪問を行っていることを定義できます。

class User < ActiveRecord::Base
  has_many :websites
  has_many :visits, :through => :websites
end

今、あなたがするなら

some_user.visits.count

このSQLが実行されます:

(0.4ms)  SELECT COUNT(*) FROM "visits" INNER JOIN "websites" ON "visits"."website_id" = "websites"."id" WHERE "websites"."user_id" = 1
=> 8 

つまり、ActiveRecordはSQLクエリを作成します。

于 2012-07-24T00:37:20.027 に答える