Ruby on rails Rails将模型限制为1个记录
我正在尝试在我的应用程序中创建一个部分,用户可以在其中更新某些站点范围的属性。销售税百分比就是一个例子。尽管这一数字相对稳定,但每隔几年就会发生变化 目前,我已经创建了一个带有我想要跟踪的属性的Ruby on rails Rails将模型限制为1个记录,ruby-on-rails,activerecord,Ruby On Rails,Activerecord,我正在尝试在我的应用程序中创建一个部分,用户可以在其中更新某些站点范围的属性。销售税百分比就是一个例子。尽管这一数字相对稳定,但每隔几年就会发生变化 目前,我已经创建了一个带有我想要跟踪的属性的Globals模型。例如,要在需要的地方访问这些属性,我可以简单地执行以下代码片段 (1+ Globals.first.sales_tax) * @item.total 处理不经常变化且应用于整个站点的变量的最佳方法是什么?如果我使用这种方法,有没有办法将模型限制为一条记录?最后一个但更严肃的问题……我
Globals
模型。例如,要在需要的地方访问这些属性,我可以简单地执行以下代码片段
(1+ Globals.first.sales_tax) * @item.total
处理不经常变化且应用于整个站点的变量的最佳方法是什么?如果我使用这种方法,有没有办法将模型限制为一条记录?最后一个但更严肃的问题……我的思路是否正确?好的,所以我之前已经讨论过这个问题,作为一种设计模式,在IMO中,这不是做事情的理想方式,但有时它可能是唯一的方式,特别是如果您没有直接的磁盘写入访问权限,就像部署在Heroku上一样。这是解决办法
class Global < ActiveRecord::Base
validate :only_one
private
def only_one
if Global.count >= 1
errors.add :base, 'There can only be one global setting/your message here'
end
end
end
更多关于
您也可以使用JSON、XML或任何您想要的标记语言,好的,所以我之前已经讨论过,作为一种设计模式,它不是IMO的理想方式,但有时它可能是唯一的方式,特别是如果您没有直接的磁盘写访问权限,就像部署在Heroku上一样。这是解决办法
class Global < ActiveRecord::Base
validate :only_one
private
def only_one
if Global.count >= 1
errors.add :base, 'There can only be one global setting/your message here'
end
end
end
更多关于
您还可以使用JSON、XML或任何您想要的标记语言您可以创建一个类并转储其中的所有常量 例如:
class Global
@sales_tax = 0.9
def sales_tax
@sales_tax
end
end
然后像这样访问它:
全球销售税
或者,您可以定义全局变量—在这行的某个地方—您可以创建一个创建类并转储其中的所有常量 例如:
class Global
@sales_tax = 0.9
def sales_tax
@sales_tax
end
end
然后像这样访问它:
全球销售税
或者,你可以定义全局变量,在这行中,我觉得你很接近,但是根据你最终得到的数据结构,我会把它改为
(1+ Globals.last.sales_tax) * @item.total
然后构建某种类型的接口,该接口可以:
paper\u trail
之类的工具更新现有的Globals对象,以跟踪更改(在这种情况下,您可能需要@Brian Wheeler提供的验证)全局
对象,而不是使用种类
或类型
列来描绘不同的值,以便:
(1+ Globals.where(kind: 'Colorado Sales Tax').last) * @item.total
并且仍然构建类似于上面所述的接口。在我看来,您似乎非常接近,但根据您最终使用的数据结构,我会将其更改为
(1+ Globals.last.sales_tax) * @item.total
然后构建某种类型的接口,该接口可以:
paper\u trail
之类的工具更新现有的Globals对象,以跟踪更改(在这种情况下,您可能需要@Brian Wheeler提供的验证)全局
对象,而不是使用种类
或类型
列来描绘不同的值,以便:
(1+ Globals.where(kind: 'Colorado Sales Tax').last) * @item.total
并且仍然构建类似于上面描述的接口。我的客户将无法访问源代码。我看不到通过视图修改这些变量的方法。@Jessegoodfellor我很确定
ENV
变量在Rails中是只读的,如果您想访问它们,您需要一个bash脚本谢谢@BrianWheeler。我把环境变量和Heroku配置变量搞混了。看起来您可以在运行时操作环境变量,但这些更改不会持久。当应用程序从无法修改的初始值设定项或配置变量启动时(据我所知),会重新创建环境变量。我会在别人误入歧途之前收回我之前的评论。是的,不用担心。可以修改的持久性设置是一个漫长而复杂的话题,没有真正有希望的结局。我的客户将无法访问源代码。我看不到通过视图修改这些变量的方法。@Jessegoodfellor我很确定ENV
变量在Rails中是只读的,如果您想访问它们,您需要一个bash脚本谢谢@BrianWheeler。我把环境变量和Heroku配置变量搞混了。看起来您可以在运行时操作环境变量,但这些更改不会持久。当应用程序从无法修改的初始值设定项或配置变量启动时(据我所知),会重新创建环境变量。我会在别人误入歧途之前收回我之前的评论。是的,不用担心。可以修改的持久化设置的想法是一个漫长而复杂的话题,没有真正有希望的结局。在管理linux切片时,我将始终具有直接磁盘访问。Yaml路线是您首选的方法吗?如果是的话,你能给我举一些例子,或者写一个你自己的小例子吗?是的,我能做到,这不是最初问题的一部分,所以我在等你提问。在管理linux切片时,我将始终具有直接磁盘访问。Yaml路线是您首选的方法吗?如果是这样的话,你能给我举一些例子,或者写一个你自己的小例子吗?是的,我能做到,这不是最初问题的一部分,所以我在等你,askI也会建议旋转表格,这样他们就可以在不改变表格结构的情况下添加新的常量。我还想建议旋转表格,