gpt4 book ai didi

ruby-on-rails - Rails 中的 ActiveSupport::StringInquirer

转载 作者:数据小太阳 更新时间:2023-10-29 07:20:38 25 4
gpt4 key购买 nike

我有一个带有状态列的用户模型。而不是每次都像这样进行字符串比较

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com