views:

38

answers:

1

How can I translate this SQL into a named_scope? Also, I want the total comments param to be passed through a lambda.

"select users., count() as total_comments from users, comments where (users.id = comments.user_id) and (comments.public_comment = 1) and (comments.aasm_state = 'posted') and (comments.forum_user_id is null) group by users.id having total_comments > 25"

A: 
named_scope :comments_count_gt, lambda { |count|
  { :select => "users., count() as total_comments",
    :joins => :comments,
    :conditions => { :comments => { :public_comment => 1, :aasm_state => 'posted' } },
    :group => "users.id",
    :having => "total_comments > #{count.to_i}"
  }
}
na43251