是否有关于如何区分任何指引.nil?,.blank?和.empty??
我一般总是很困惑何时在我的应用程序中使用它们,因为它们似乎都意味着相同但具有不同的含义.
有没有人在血淋淋的细节上有任何备忘单?
我安装了Active Support 3.0.3,使用Ruby 1.8.7安装了Rails 3.0.3.
当我尝试使用时,1.week.ago我得到了
NoMethodError: undefined method 'week' for 1:Fixnum
from (irb):2
Run Code Online (Sandbox Code Playgroud)
其他核心扩展似乎有效.我在一个朋友的计算机上尝试过(同样的安装规范和旧版本),结果相同.
是什么赋予了?
所有这些都在IRB中.
我想确保我在正确的场合使用它们,并想知道任何细微之处.它们似乎以相同的方式起作用,即检查是否已经定义了一个对象字段,当我通过控制台使用它们时,当我进行谷歌搜索时,并没有在线提供大量信息.谢谢!
<% if dashboard_pane_counter.remainder(3) == 0 %>
do something
<% end>
Run Code Online (Sandbox Code Playgroud)
如果未定义dasboard_pane_counter,如何将其评估为false而不是抛出异常?
我写了一个脚本,它使用Rails对Ruby核心Object类的扩展,现在我想把它自己分开.而不是重写这些,是否有任何我可以使用的库或扩展来使它们独立可用?
我有一个类似于以下的模型,
class Activity < ActiveRecord::Base
attr_accessible :name, :admin
validates :name, :presence => true
validates :admin, :presence => true
end
Run Code Online (Sandbox Code Playgroud)
name属性是一个字符串,admin属性在迁移中定义为boolean.
如果我尝试在控制台中使用创建模型的实例,
a = Activity.create(:name => 'Test', :admin => 0)
Run Code Online (Sandbox Code Playgroud)
然后验证失败,说我需要为Admin提供一个值.为什么?我提供了一个值.
我能理解,如果我没有提供任何价值,或者我提供了零.但为什么像0这样的值(或者甚至是假的)会导致验证失败?
可以安全地假设!object.nil? == object.present?在Rails中,或者有没有问题?这是一个场景:
def signed_in?
!current_user.nil? # Would current_user.present? mean the same thing here?
end
def sign_in(user)
cookies[:token] = user.token
self.current_user = user
end
def current_user
@current_user ||= User.find_by(token: cookies[:token]) if cookies[:token]
end
Run Code Online (Sandbox Code Playgroud) 是否有要检测的rails函数["", "", ...](即只包含空字符串或字符串的数组)为空
我的要求:
[""].foo? =>是的
["", ""].foo? =>是的
["lorem"].foo? =>假
["", "ipsum"].foo? =>假
我试过用array.reject!(&:empty?).blank?.它工作,但这改变了我的阵列.我不希望我的阵列被改变.请帮我找一个紧凑的方法.
在 Ruby on Rails 中,以下各项之间是否存在区别:
if obj
# ...
end
Run Code Online (Sandbox Code Playgroud)
和:
if obj.present?
# ...
end
Run Code Online (Sandbox Code Playgroud)
看起来他们做同样的事情并且不使用.present?将有助于保持代码行更短并且可能更干净。我知道这.present?是相反的,blank?但在尝试确定对象是否“真实”时,我们是否应该始终使用它?
是否存在某种性能差异?