2016-08-23 1 views
0

このレール/ SQLコードを頼まない...RailsのSQLクエリーカウント結果

@new_relationships = User.select('*') 
         .from("(#{@rels_unordered.to_sql}) AS rels_unordered") 
         .joins(" 
        INNER JOIN relationships 
        ON   rels_unordered.id = relationships.character_id 
        ORDER BY relationships.created_at DESC 
        ") 

は次のように始まるクエリ生成:

SELECT COUNT(*) FROM (SELECT ..... 

は、なぜそれがレコードをカウントしているの??私は数を求めなかった。これが起こっているように私は@new_relationshipsで最初に行う事が

@new_relationships.any? 

クエリためであるので、それが見えます、[OK]を

SELECT * FROM (SELECT ..... 

をEDIT

:私は単に参加した後、すべての列を選択しますゆっくりと実行されます。クエリに影響しています!私はレールがクエリを実行し、すべてのレコードを@new_relationshipsに取得し、それらを数えると思っていたでしょう。これは驚くべき特徴です。だから私はどうやって?クエリに影響しますか?言い換えれば、クエリを意図どおりに実行させるにはどうしたらいいですか?

+0

この出力は、レールコンソールまたはサーバーログから出力されますか。 –

+0

これはサーバーログからのものです。 – Bazley

+0

コンソールで試してみてください。クエリSQLを表示してください。 –

答えて

0

リレーションのdupでテストできるため、元のリレーションオブジェクトではなくany?で修正された別のリレーションオブジェクトになります。

@new_relationships.dup.any?