Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails,保存管理员要求的一个值的最佳方法_Ruby On Rails_Ruby - Fatal编程技术网

Ruby on rails Rails,保存管理员要求的一个值的最佳方法

Ruby on rails Rails,保存管理员要求的一个值的最佳方法,ruby-on-rails,ruby,Ruby On Rails,Ruby,例如,我的RubyonRails应用程序中有Post模型。我想创建一种方式,让没有代码经验的用户可以为生产中的所有帖子设置过期日期 我的意思是,例如,帖子是在21:00创建的,管理员希望在n小时内过期所有帖子。然后您向管理员询问n值。(所有职位的n值都相同) 您不会只为一条记录在数据库中创建一个新表,对吗?但是你需要一个地方来保存这个值。我还有其他选择吗 希望我把自己说清楚,谢谢 有许多选项(包括数据库上的新表),但最适合您的场景的选项是使用环境变量 管理员可以轻松地更新环境变量,并在更新后立即

例如,我的RubyonRails应用程序中有
Post
模型。我想创建一种方式,让没有代码经验的用户可以为生产中的所有帖子设置过期日期

我的意思是,例如,帖子是在21:00创建的,管理员希望在
n
小时内过期所有帖子。然后您向管理员询问
n
值。(所有职位的
n
值都相同)

您不会只为一条记录在数据库中创建一个新表,对吗?但是你需要一个地方来保存这个值。我还有其他选择吗


希望我把自己说清楚,谢谢

有许多选项(包括数据库上的新表),但最适合您的场景的选项是使用环境变量

管理员可以轻松地更新环境变量,并在更新后立即提供给您的应用程序


设置环境变量

将此行添加到
/.bash_profile
(在Mac OS X中)和
/etc/environment
(在Ubuntu中):

其中,
MY_VARIABLE
是变量的名称,
VALUE
是变量的值

从环境变量获取值

在rails应用程序中的任何位置,您都可以使用
ENV[“MY_variable”]
访问环境变量,例如:

my_env_variable = ENV["MY_VARIABLE"]

回答其他问题

此环境变量保存在哪里

.bash\u配置文件
/etc/environment
文件

例如,如何从控制器覆盖它们

您应该能够使用更改其值

ENV["MY_VARIABLE"] = new_value
但我建议不要这样做,因为使用env变量会失去优势

它们要保存多久

只要它们在
.bash_profile
/etc/environment
文件中保持指定状态

部署影响主题

没有

如何查看环境变量列表

运行以下命令:

$ printenv

使用常量!在Post模型中,设置一个绑定到要锁定到期日期的常量:

class Post
# ...
到期日=新日期(2017年5月14日)
# ...
结束

然后在需要时引用该常数:

Post.create!(过期日期:Post::过期日期,#…)

我想你的问题包括两个部分:

  • 如何模拟和坚持某些职位已经过期的事实
  • 一种简单的方法是在posts数据库表中添加一个布尔
    expired
    列,以指示post是否已过期。通常在处匹配
    expired\u,在
    处匹配
    expired\u列,用于审计跟踪

  • 如何为“没有代码经验的用户”提供过期帖子的操作

  • 如果您使用的是rails,那么可以将gem用于管理视图管理UI(例如)。然后,您可以添加自定义逻辑,以便仅通过管理UI调用。另一种选择是将此逻辑公开为,并通过终端(无GUI)调用。

    我认为最好将过期日期锁定在类常量中,以便作者和日期可以通过源代码管理引用更改。@Dan这是我的第一个选择(很好),但如果该值会经常更改(它认为会更改),那么环境变量就更方便了(您不需要更改代码、部署和重新启动应用程序)。如果值始终保持不变,那么常数肯定会更好。Env variable=
    config/secrets.yml
    file?以及如何更新它,例如提交表单?@andredrozdov不,env变量不是代码的一部分,我的意思是,您不会在那里配置它,您将从代码中调用它(即
    hours\u to\u expire=env[“EXP\u hours”]
    其中
    EXP\u hours
    是变量的名称)。如何设置(和更新)变量取决于应用程序运行的操作系统。你的操作系统是什么?Development-Mac,Server-ubuntu14.04,但我有很多问题:这个环境变量保存在哪里?例如,如何从控制器覆盖它们?它们要保存多久?部署影响主题?如何查看环境变量列表?
    $ printenv