gpt4 book ai didi

ruby-on-rails - Ruby 常量查找

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

这可能是一个简单的问题,但我正在尝试从值中查找 Ruby 中的常量名称。例如:

class Xyz < ActiveRecord::Base
ACTIVE = 1
PENDING = 2
CANCELED = 3
SENT = 4
SUSPENDED = 5
end

我的数据库中的状态为 1。我想基于此检索 ACTIVE,以便我可以在 View 中显示它。

这样做的好方法是什么?

最佳答案

class Module
def constant_by_value( val )
constants.find{ |name| const_get(name)==val }
end
end

class Xyz
ACTIVE = 1
PENDING = 2
CANCELED = 3
SENT = 4
SUSPENDED = 5
end

p Xyz.constant_by_value(4)
#=> :SENT

但是,我不会这样做:使用编程名称作为 View 的值似乎不是个好主意。您可能会遇到想要更改显示名称的情况(也许“suspended”应该显示为“on hold”),然后您必须重构代码。

我会使用模型中的常量在您的 View 或 Controller 中放置一个映射:

status_name = {
Xyz::ACTIVE => "Active",
Xyz::PENDING => "Pending",
Xyz::CANCELED => "Canceled",
Xyz::SENT => "Away!",
Xyz::Suspended => "On Hold"
}
@status = status_name[@xyz.status_id]

关于ruby-on-rails - Ruby 常量查找,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10694200/

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