any?
,many?
和exists?
之间有什么区别?这三个都在检查表是否为空。
User.exists?
=> false
User.any?
=> false
User.many?
=> false
答案 0 :(得分:3)
首先关闭.exists?和.many?是通过Rails提供的扩展,而.any?是Ruby。
<强> .ANY吗
.ANY?提供多功能性,而不是检查某些东西是空的。例如:
%w[ant bear cat].any? { |word| word.length >= 3 } #=> true
我们可以将一个块传递给any方法,以查看collect有哪些我们正在寻找的项目。
<强>。很多吗
.many检查是否有多个。
[1,2,3,4,5,6].many? # => true
[].many? # => false
[1].many # => false
[1,2,3,4].many? { |o| o.multiple_of?(2) }
将其视为collection.size&gt;的别名; 1
<强> .exists吗
.exists查看记录是否符合提供的条件
Person.exists?(5)
Person.exists?('5')
Person.exists?(:name => "David")
Person.exists?(['name LIKE ?', "%#{query}%"])
这比.any。
更具体<强> .empty吗 如果要查看String,Hash或Array是否为空,可以在其上调用.empty。
答案 1 :(得分:1)
<强>存在吗
如果在给定条件下至少有一条记录,则返回true。你可以传递id或条件
exists?(id_or_conditions = {}) public
内部使用find_initial
在内部使用给定条件发出查询并限制1
例如:
User.exists? #SELECT 1 AS one FROM "users" LIMIT 1
User.exists?(2) #SELECT 1 AS one FROM "users" WHERE "users"."id" = 2 LIMIT 1
User.exists?(:name => "name") #SELECT 1 AS one FROM "users" WHERE "users"."name" = 'usha' LIMIT 1
<强>任何吗
如果有atleast one record
,则返回true。不带任何参数
例如:
User.any? # SELECT COUNT(*) FROM "users"
<强>许多吗
如果有more than one record
,则返回true。不带任何参数
例如:
User.many? #SELECT COUNT(*) FROM "users"
答案 2 :(得分:0)
User.any?
User.any? ## SELECT COUNT(*) FROM "members"
如果Users表中存在记录,则返回true
。这意味着,只有在Users表中有true
条记录,否则它将返回1 or more
,否则会返回false
。
User.many?
User.many? ## SELECT COUNT(*) FROM "users"
如果Users表中有true
条记录,则返回more than one
。这意味着,如果用户表中的记录数为false
,它将返回0 or 1
。
User.exists?(conditions =:none)
User.exists? ## SELECT 1 AS one FROM "users" LIMIT 1
如果Users表中至少有一条记录与给定的true
匹配,则返回id or conditions
,否则返回false
。这一个需要0..1参数。
例如(有条件):
User.exists?(1) ## SELECT 1 AS one FROM "members" WHERE "members"."id" = 1 LIMIT 1
User.exists?(name: 'XYZ') ##SELECT 1 AS one FROM "members" WHERE "members"."name" = 'XYZ' LIMIT 1