作者热门文章
- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我有一个带有状态列的用户模型。而不是每次都像这样进行字符串比较
user.status == 'verified'
我觉得我应该做
user.status.verified?
所以我添加了下面的代码
def status
ActiveSupport::StringInquirer.new(self.status)
end
但现在我的堆栈级别太深了,这是可以理解的。我该如何解决这个问题?
我正在使用 Rails 3.2。
最佳答案
您的问题是您在 status
方法中调用了 status
,这会导致无限递归问题。
这里的大多数答案都集中在使用 ActiveSupport::StringInquirer 初始化器上,像这样:
def status
return unless self['status']
ActiveSupport::StringInquirer.new(self['status'])
end
但你不需要它。 ActiveSupport 为所有字符串添加了一个inquiry 方法,因此您可以这样做:
def status
self['status'].try(:inquiry)
end
这与使用 read_attribute 相同:
def status
read_attribute(:status).try(:inquiry)
end
或者你可以调用 super:
def status
super.try(:inquiry)
end
关于ruby-on-rails - Rails 中的 ActiveSupport::StringInquirer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8764391/
我有一个带有状态列的用户模型。而不是每次都像这样进行字符串比较 user.status == 'verified' 我觉得我应该做 user.status.verified? 所以我添加了下面的代码
我是一个相对较新的 Rails 程序员,当我尝试预编译 Assets (有时甚至运行服务器)时,我得到这个错误: TypeError: couldn't digest ActiveSuppor
我是一名优秀的程序员,十分优秀!