0

こんにちは、Rails プラグインを使用しておりacts-as-taggable-on、特定のクエリと名前が一致する、または部分的に一致する、最も使用されている上位 5 つのタグを見つけようとしています。

私がする時User.skill_counts.order('count DESC').limit(5).where('name LIKE ?', params[:query])

これにより、次のエラーが返されます。

ActiveRecord::StatementInvalid: SQLite3::SQLException: ambiguous column name: name: SELECT     tags.*, COUNT(*) AS count FROM       "tags" INNER JOIN users ON users.id = taggings.taggable_id LEFT OUTER JOIN taggings ON tags.id = taggings.tag_id AND taggings.context = 'skills' WHERE     (taggings.taggable_type = 'User') AND (taggings.taggable_id IN(SELECT     users.id FROM       "users")) AND (name LIKE 'asd') GROUP BY  tags.id, tags.name HAVING    COUNT(*) > 0 ORDER BY  count DESC LIMIT 5

しかし、私がするときUser.skill_counts.first.name

これは戻ります

"alliteration"

この件について何か助けていただければ幸いです。

4

1 に答える 1

4

ツアークエリは次のようになります

SELECT  tags.*, COUNT(*) AS count FROM  "tags" 
         INNER JOIN users ON users.id = taggings.taggable_id 
         LEFT OUTER JOIN taggings ON tags.id = taggings.tag_id AND taggings.context = 'skills'
         WHERE  (taggings.taggable_type = 'User') AND 
                (taggings.taggable_id IN(SELECT users.id FROM "users")) AND 
               (tags.name LIKE 'asd') 
         GROUP BY  tags.id, tags.name HAVING COUNT(*) > 0 
         ORDER BY  count DESC 
         LIMIT 5

このためにフォローしてみてください

User.skill_counts.order('count DESC').limit(5).where('tags.name LIKE ?', params[:query]) 
于 2010-05-12T07:05:30.117 に答える