Hallo,
ich hänge gerade etwas fest.
Es gibt dises model:
class Product < ActiveRecord::Base
has_many :covers
has_many :assets, :through => :covers
…
end
Ich benötige für das model einen named scope, der mir nur solche
products
liefert, die mindestens ein asset haben.
Meine Idee war das hier:
named_scope :with_assets,
:include => :assets,
:conditions => [‘count(assets.id) > 1’]
Aber da wird eine exception geworfen:
ActiveRecord::StatementInvalid: Mysql::Error: Invalid use of group
function:
SELECT products
.id
AS t0_r0, products
.legacy_id
AS t0_r1,
products
.product_type_id
AS t0_r2, products
.manufacturer_id
AS
t0_r3,
products
.active
AS t0_r4, products
.created_at
AS t0_r5,
products
.updated_on
AS t0_r6, products
.name
AS t0_r7,
products
.description
AS t0_r8, products
.identity_key
AS t0_r9,
products
.price
AS t0_r10, products
.vat
AS t0_r11,
products
.weight
AS
t0_r12, products
.comment
AS t0_r13, products
.subtitle
AS t0_r14,
assets
.id
AS t1_r0, assets
.name
AS t1_r1, assets
.extension
AS t1_r2,
assets
.content_type
AS t1_r3, assets
.image_width
AS t1_r4,
assets
.thumbnail_width
AS t1_r5, assets
.updated_on
AS t1_r6,
assets
.created_at
AS t1_r7, assets
.title
AS t1_r8,
assets
.description
AS t1_r9, assets
.comment
AS t1_r10 FROM
products
LEFT OUTER JOIN covers
ON (products
.id
= covers
.product_id
)
LEFT
OUTER JOIN assets
ON (assets
.id
= covers
.asset_id
) WHERE
(count(assets.id) > 1)
Ich sehe gerade nicht, wo mein Fehler liegt. Hat jemand vielleicht einen
Tip?
Viele Grüße und schon mal vielen Dank fürs lesen
Michael K.