小编big*_*ner的帖子

何时触发Rails中的belongs_to?

我有一个问答应用程序.每当有人添加问题的答案时,我想更新问题的updated_at时间戳.

因此我在Answer模型中使用touch.

  belongs_to :question, :touch => true
Run Code Online (Sandbox Code Playgroud)

但是,似乎时间戳在没有添加答案时更新.我想弄清楚如何/为什么.自添加此触摸方法以来,这种情况才发生.

所以我想确认什么时候触摸?是仅在创建,编辑或销毁答案对象时?还有其他活动吗?即不应仅仅通过在特定情况下查看答案对象来触发它?

我找不到任何可靠的文档来描述touch在belongs_to关系的上下文中是如何工作的.

这有点令人费解的原因是该应用程序相对简单,并且在提交后不会给用户任何编辑或销毁答案的功能.

ruby-on-rails-3

17
推荐指数
1
解决办法
8619
查看次数

Ruby(在Rails上)正则表达式:从数字中删除数千个逗号

这看起来很简单,但我遗漏了一些东西.

我有许多来自各种来源和不同格式的输入.

数字输入

123
123.45
123,45 (note the comma used here to denote decimals)
1,234
1,234.56
12,345.67
12,345,67 (note the comma used here to denote decimals)
Run Code Online (Sandbox Code Playgroud)

有关输入的其他信息

  • 数字总是不到100万
  • 编辑:这些是价格,所以要么是整数,要么是百分之一

我正在尝试编写一个正则表达式并使用gsub删除数千个逗号.我该怎么做呢?

我写了一个正则表达式: myregex = /\d+(,)\d{3}/

当我在Rubular中测试它时,它表明它仅在我想要的测试用例中捕获逗号.

但是当我运行gsub时,我得到一个空字符串: inputstr.gsub(myregex,"")

看起来gsub正在捕获所有内容,而不仅仅是()中的逗号.我哪里错了?

ruby regex ruby-on-rails-3

8
推荐指数
1
解决办法
2418
查看次数

Django 检查并替换 Docker Compose 文件:未设置调试标志?

我正在尝试为生产准备 Django 应用程序。我创建了一个备用 docker-compose YML 文件,其中指定 DEBUG=0。但是,当我运行 django 检查部署时,它说 DEBUG 设置为 True。

对我哪里出错有什么想法吗?我认为这是我使用 Docker 的问题。但这可能是我使用 Django 的方式有问题吗?

这是我的步骤:

  1. 使用 docker-compose.yml 创建我的项目(见下文)
  2. 创建用于生产的 docker-compose-prod.yml (见下文)
  3. 跑了以下
$ docker-compose down
$ docker-compose -f docker-compose-prod.yml up -d --build
$ docker-compose exec web python manage.py check --deploy
Run Code Online (Sandbox Code Playgroud)
  1. 支票输出: ?: (security.W018) You should not have DEBUG set to True in deployment.

迄今为止的一些调查步骤:

A.检查环境变量。

$ docker-compose exec web python
>>> import os
>>> os.environ.get('DEBUG')
'0'
Run Code Online (Sandbox Code Playgroud)

B. 尝试以不同方式重建 docker 镜像,例如使用 --no-cache 标志

C. 在条件代码块中的settings.py 中设置DEBUG 标志(而不是使用os.environ.get)。这似乎有效。但我不明白为什么?代码详情如下。

代码摘录 …

python django docker docker-compose

1
推荐指数
1
解决办法
1113
查看次数

Ruby中的正则表达式:未找到表达式

我在Ruby(在Rails上)使用正则表达式时遇到了麻烦.我对此比较陌生.

测试字符串是:http: //www.xyz.com/017010830343?$ ProdLarge $

我想删除"$ ProdLarge $".换句话说,$符号和之间的任何东西.

我的正则表达式是:\ $\w +\$

Rubular说我的表情还可以.http://rubular.com/r/NDDQxKVraK

但是,当我运行我的代码时,应用程序说它找不到匹配项.代码如下:

some_array.each do |x|
   logger.debug "scan #{x.scan('\$\w+\$')}"
   logger.debug "String? #{x.instance_of?(String)}"

   x.gsub!('\$\w+\$','scl=1')

   ...
Run Code Online (Sandbox Code Playgroud)

我的记录器调试行显示"[]"的结果.字符串被确认为真.并且gsub线没有效果.

我需要纠正什么?

ruby regex ruby-on-rails

0
推荐指数
1
解决办法
79
查看次数