相关疑难解决方法(0)

在Ruby on Rails中对nil v.空v.空白的简要解释

我发现自己反复寻找的差异明确的定义nil?,blank?以及empty?在Ruby on Rails的.这是我最接近的:

  • blank?对象是false,空或空白字符串.例如""," ",nil,[],和{}都是空白.

  • nil? 对象是NilClass的实例.

  • empty?对象是特定于类的,并且定义因类而异.如果字符串没有字符,则该字符串为空;如果字符串不包含任何项目,则该字符串为空.

有什么遗漏,或者可以做出更严格的比较吗?

ruby ruby-on-rails

1098
推荐指数
15
解决办法
30万
查看次数

.exists之间的性能差异?和.where.present?

以下两个选项之间存在哪些性能差异(如果有的话)(在本回答中提到)

Thing.where(name: "Bob").present?
Run Code Online (Sandbox Code Playgroud)

它产生SQL

SELECT COUNT(*) FROM things WHERE things.name = "Bob";
Run Code Online (Sandbox Code Playgroud)

Thing.exists?(name: "Bob")
Run Code Online (Sandbox Code Playgroud)

它产生SQL

SELECT 1 AS one from things WHERE name ="Bob" limit 1;
Run Code Online (Sandbox Code Playgroud)

由于SQL语句不同,理论上可能存在性能差异.但我不知道,假设name在数据库中编入索引,是否存在任何实际差异.此外,在Ruby-land中完成的工作量(例如初始化和GC)是否有任何差异.

如果它有任何区别,我正在使用Rails 3.2.20.

performance ruby-on-rails ruby-on-rails-3 rails-activerecord

4
推荐指数
1
解决办法
1021
查看次数