gpt4 book ai didi

ruby-on-rails - 如何在 Rails 模型创建中使用 Range 数据类型?

转载 作者:行者123 更新时间:2023-12-05 01:19:30 25 4
gpt4 key购买 nike

我正在使用 Rails 版本 3。
我想创建一个模型,其中我有一个名为“页面访问”的字段,我希望它保持范围作为值,例如:(50 .. 100) 、(1000 .. 5000) 等。如何实现? ?
即使目前 Rails 中没有这种数据类型,我也想知道如何实现这一点?

最佳答案

我假设您实际上想在模型中存储一个范围,而不是一个范围内的值。 (如果你想做后者,验证将是你的答案)。

所以,范围。在一个模型中。你有两个选择,每一个都相当不错。

选项 1:创建一个类型为“text”的列 ( range_column )。将 Ruby 范围对象传递给该列,例如 @my_model_object.range_column = (50..100) .告诉 Rails 像这样序列化你的范围:

class MyModel < ActiveRecord::Base
serialize :range_column
end

现在,Rails 会自动将您的范围转换为 YAML 以进行数据库存储,并在再次检索记录时将其转换回范围对象。没有比这更容易的了!

选项 2:创建两个类型为“整数”的列( range_startrange_end )。在您的模型中设置如下内容:
class MyModel < ActiveRecord::Base
def range=(rstart, rend)
self.range_start = rstart
self.range_end = rend
end

def range
(range_start..range_end) # or as an array, or however you want to return it
end
end

第一个选项更容易(而且,在我看来,更好),而第二个选项为您提供了开箱即用的更多灵活性,以防您不想使用 Ruby 范围对象(尽管如此,您为什么不呢? ?)。

关于ruby-on-rails - 如何在 Rails 模型创建中使用 Range 数据类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3947926/

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