我有一个名为 add_has_relation 的范围 与另一个表进行左连接并使用AS重命名为这样的字段:
scope :add_has_relation, lambda { |fan|
joins("LEFT JOIN fan_influencers fi ON fi.influencer_id = influencers.id
AND fi.fan_id = #{fan.id}").select('influencers.*', 'fi.id AS has_relation') if fan.present?
}
如果我使用它,一切都很好,我可以使用该字段的新字段:
Influencer.add_has_relation(Fan.find(2))。first.has_relation
但如果我像这样使用COUNT:
Influencer.add_has_relation(Fan.find(2))。计数
由于 StatementInvalid 而失败,因为由于某种原因它正在运行此查询:
SELECT COUNT(impactrs。*,fi.id AS has_relation)FROM" inf ...
因此我必须像这样使用它:
Influencer.add_has_relation(Fan.find(2))图(&安培;:ID)。.Count之间的
但我不认为它很整洁。有没有更好的方法呢?
答案 0 :(得分:0)
你试过这种方式吗?
val id = """_(\d+)""".r
val ids = map.keys.collect { case id(x) => x }
答案 1 :(得分:0)
您可以在count
方法中使用字段参数:
Influencer.add_has_relation(Fan.find(2)).count(:id)