大于一的方法?

Dod*_*nas 1 ruby ruby-on-rails

我有一个在Rails中运行的查询:

me = User.find(1)
my_groups = me.groups
Run Code Online (Sandbox Code Playgroud)

my_groups 可能会返回多行.

有没有办法使用一种方法来确定是否一个快速和肮脏的方式my_groupsme.groups大于一?

也许像是my_groups.greater_than_one? 不是,你会建议在确定查询是否返回> 1行?

me.groups本质上是另一个与User关联的表.它基本上显示了特定用户所属的"组".

And*_*all 8

没有必要的方法,你可以简单地比较size:

me.groups.size > 1
Run Code Online (Sandbox Code Playgroud)

但是,如果有多个记录,ActiveRecord :: Relation确实many?会返回true.来自文档:

true如果集合具有多个记录,则返回.相当于 collection.size > 1.

class Person < ActiveRecord::Base
  has_many :pets
end

person.pets.count #=> 1
person.pets.many? #=> false

person.pets << Pet.new(name: 'Snoopy')
person.pets.count #=> 2
person.pets.many? #=> true
Run Code Online (Sandbox Code Playgroud)

如果你只关心是否有任何元素(即> 0)any(这也是Ruby核心的Enumerable的一部分).