有没有办法从 ruby mongoid 查询中 return has_many 计算字段值?
Is there a way to return a has_many calculated field value from a ruby mongoid query?
我的目标是避免多次数据库查询,一次性搞定
我有一个名为 Sponsor
的文档对象模型,它 has_many
players
class Sponsor
include Mongoid::Document
has_many :players
field :name, type: String
# . . .
end
class Player
include Mongoid::Document
belongs_to :sponsor, inverse_of: :players
field :name, type: String
end
我想获得我的 Sponsor
的 players
的数量,但我希望通过在 Sponsor
class Sponsor
# . . .
def self.return_all_with_player_count
# do something to get object with injected player count
end
end
# Sponsor.return_all_with_player_count => [{name: 'Someone 1', player_count: 2}, {name: 'Someone 2', player_count: 12}]
## 编辑
这是 scope
以某种方式使用的地方吗?
尝试这个实现,它将return方法return_all_with_player_count
所期望的。
def self.return_all_with_player_count
all.map do |sponsor|
{ name: sponsor.name, player_count: sponsor.players.count }
end
end
scope
就像一个过滤器,不适合这种情况。
我的目标是避免多次数据库查询,一次性搞定
我有一个名为 Sponsor
的文档对象模型,它 has_many
players
class Sponsor
include Mongoid::Document
has_many :players
field :name, type: String
# . . .
end
class Player
include Mongoid::Document
belongs_to :sponsor, inverse_of: :players
field :name, type: String
end
我想获得我的 Sponsor
的 players
的数量,但我希望通过在 Sponsor
class Sponsor
# . . .
def self.return_all_with_player_count
# do something to get object with injected player count
end
end
# Sponsor.return_all_with_player_count => [{name: 'Someone 1', player_count: 2}, {name: 'Someone 2', player_count: 12}]
## 编辑
这是 scope
以某种方式使用的地方吗?
尝试这个实现,它将return方法return_all_with_player_count
所期望的。
def self.return_all_with_player_count
all.map do |sponsor|
{ name: sponsor.name, player_count: sponsor.players.count }
end
end
scope
就像一个过滤器,不适合这种情况。