class User < ActiveRecord::Base
has_many :portfolios
end
class Portfolio < ActiveRecord::Base
belongs_to :user
end
每个投资组合都有一个布尔字段,用于确定它是已满还是空。
如何根据用户拥有的完整和空白投资组合的数量来定位用户(作为有效记录关系)?
使用select(返回数组)的示例:
User.select { |user| user.portfolios(full: true).count > 1 &&
user.portfolios(full: false).count == 1 }
答案 0 :(得分:0)
据我所知,您希望选择具有指定投资组合数的用户。即选择具有2个投资组合的所有用户。所以,在这种情况下你可以使用类似的东西:
class User < ActiveRecord::Base
...
scope :with_protfolio_count, -> (count) {
where(id: Portfolio.having('count(1) = ?', count).group(:user_id).select(:user_id))
}
...