gpt4 book ai didi

ruby - Rails 中添加状态的最佳实践

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

我需要为对象添加状态,并且需要有关 Rails 方法的提示。我曾在某个地方看到状态已添加到模型中,但已经丢失了它所在的位置。

我所说的状态是指跟踪项目状态的东西。像 {0: :ORDERED, 1: :CHANGED, 2: :SHIPPED, 3: :ARCHIVED} 用于店内订单。看起来它需要存储在数据库中的 id,我可以在代码中使用的常量或符号而不是整数 id,以及用于 UI 的一两个人类可读消息

最佳答案

有几种简单的方法可以做到这一点。如果状态的名称很短,我基本上会按照 Samy 的建议将它们直接存储在模型中。所以,在你的迁移中,你会做

add_column :orders, :status, :string

然后,在您的模型中,您可以使用 status 方法来检索状态。您需要确保只存储有效状态,所以您的 :inclusion 验证器是这样的:

class Order
validates :status, inclusion: { in: %w(ordered changed shipped archived) },
presence: true
end

如果状态较长,您可以做一些与上面非常相似的事情,为每个状态取一个短名称,然后添加一个额外的方法来为您提供完整的状态消息

class Order

STATUSES = { 'ordered' => 'Order placed',
'changed' => 'A change has been made to the order',
'shipped' => 'The order has been shipped',
'archived' => 'The order has been archived' }

def self.valid_statuses
STATUSES.keys
end

validates :status, inclusion: { in: valid_statuses },
presence: true

def extended_status
STATUSES[status]
end
end

关于ruby - Rails 中添加状态的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10744059/

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