gpt4 book ai didi

ruby-on-rails - 在 ActiveRecord 中存储枚举值并转换为字符串以进行显示的最佳方法

转载 作者:行者123 更新时间:2023-12-03 22:51:15 26 4
gpt4 key购买 nike

我试图找出在 activerecord 中存储枚举值的最佳方法,但将其转换为“标题”以在应用程序中显示。

IE。

审查枚举:

UNREVIEWED = {:title => "Unreviewed", :name => "UNREVIEWED"}
REVIEWED = {:title => "Reviewed", :name => "REVIEWED"}
FLAGGED = {:title => "Flagged as inappropriate", :name => "FLAGGED"}

因此,在 Java 领域,我习惯于将 ENUM 名称(即(已审查))存储在数据库中,然后将该名称转换为服务器上的实际枚举,以便我可以在其上调用辅助方法,即:
review = Review.valueOf(review)
review.title()

我可以在 Rails 中做类似的事情来实现这一目标吗?

仅供引用,我们正在努力使我们的应用程序保持超小,因此如果我可以在没有 GEM 的情况下轻松完成此操作或类似操作,那就太好了。

任何“标准”的方法来做到这一点,因为我想我不是第一个遇到这个问题的人?

谢谢!

最佳答案

ActiveRecord 枚举是最好的方法,因为它是框架的一部分(从 4.1 版开始)。

它的用法很简单:

迁移 :

class AddEnumToMyModel < ActiveRecord::Migration
def change
add_column :my_model, :status, :integer, default: 0
end
end

型号:
class MyModel < ActiveRecord::Base
enum status: [:draft, :beta, :public]
end

然后使用它:
MyModel.draft # gets all drafts
MyModel.last.draft? # checks if the last model is draft
MyModel.last.status # gets the string description of the status of my model

有关模式信息,请参阅 documentation .

关于ruby-on-rails - 在 ActiveRecord 中存储枚举值并转换为字符串以进行显示的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14911977/

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