小编Tur*_*rgs的帖子

Postgres Rails Adapter认为Bigint/Varchar是Integer - 保存时会导致异常

更新:这是关于Rails 4.x并不是Rails 5中的问题.

我有一个Number模型,其中一个number字段是bigint.该schema.rb文件正确地在数据库中创建表结构.

Postgres数字架构

但是,使用该应用程序时,当我创建一个新的数字时,我收到一条错误消息:

/
Error 71731224865的RangeError 超出ActiveRecord :: ConnectionAdapters :: PostgreSQL :: OID :: Integer的范围,限制为4

为什么这个数字字段仍然被视为标准整数而不是bigint?

这似乎与StackOverflow上的其他"超出范围"错误不同,因为它们似乎都无法在数据库中首先将字段定义为bigint.但是,我已经得到了......这似乎是"正在保存"适配器吓坏了.

这是schema.rb中出现的create_table:

create_table "numbers", id: false, force: :cascade do |t|
  t.bigint   "number",           null: false, index: {name: "index_numbers_on_number", unique: true}
  t.string   "formatted_number"
  t.text     "description"
  t.integer  "user_id",          null: false, index: {name: "index_numbers_on_userid"}, foreign_key: {name: 'fk_numbers_user_id'}
  t.datetime "created_at",       null: false
  t.datetime "updated_at",       null: false
end
Run Code Online (Sandbox Code Playgroud)

创建数字图像
堆栈跟踪

更新1:我重新创建了该列,DECIMAL(11,0)希望这是一个临时的解决方法,但是同样的错误也失败了!也许我作为解决方法的唯一选择是VARCHAR(11).

更新2:好的.奇怪的事情正在发生.我现在已经定义了这个字段,VARCHAR(11)所以我可以继续工作......但是也失败了同样的错误.什么? …

postgresql activerecord ruby-on-rails

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

以UTC格式保存日期时间有时不准确

通常,处理日期时的最佳做法是将它们存储在UTC中并转换回用户在应用程序层中所期望的任何内容.

这不一定适用于将来的日期,特别是在日期/时间特定于用户时区的情况下.基于当地时间的时间表需要存储当地时间.

在我的情况下,有一个属性,它是一个包含未来事件的START_TIME时间戳,相比于其他一切现在或过去(包括created_atupdated_at时间戳).

为什么

该特定字段是用户选择时间的未来事件的时间戳.

对于未来的事件,似乎最好的做法是不存储UTC.

开发人员可以保存用户期望我们保存的内容:停机时间,而不是将时间与时区一起保存.

当用户选择上午10点时,即使由于夏令时用户与UTC的偏移在创建和事件日期之间发生变化,它也需要保持上午10点.

因此,在2016年6月,如果用户在悉尼午夜2017年1月1日创建活动,则该时间戳将作为数据库存储在数据库中2017-01-01 00:00.创建时的偏移量为+10:00,但在事件发生时,它是+11:00 ..除非政府决定在此期间改变它.

同样明智的,我希望我在2016年1月1日午夜在布里斯班创建一个单独的活动,也可以存储为2017-01-01 00:00.我存储时区,即存储Australia/Brisbane在单独的字段中.

在Rails中执行此操作的最佳实践方法是什么?

我尝试了很多选择但没有成功:

1.跳过转换

问题,这只会在读取时跳过转换,而不是写入.

self.skip_time_zone_conversion_for_attributes = [:start_time]
Run Code Online (Sandbox Code Playgroud)

2.更改要使用的整个应用程序配置 config.default_timestamp :local

为此,我设置:

配置/ application.rb中

config.active_record.default_timezone = :local
config.time_zone = 'UTC'
Run Code Online (Sandbox Code Playgroud)

应用程序/模型/ event.rb

...
self.skip_time_zone_conversion_for_attributes = [:start_time]
before_save :set_timezone_to_location
after_save :set_timezone_to_default

def set_timezone_to_location
  Time.zone = location.timezone
end

def set_timezone_to_default
  Time.zone = 'UTC'
end
...
Run Code Online (Sandbox Code Playgroud)

坦率地说,我不确定这是做什么的......但不是我想要的.

我认为它的存在是因为我的布里斯班事件被存储为,2017-01-01 00:00但是当我为悉尼创建一个新事件时,它被存储为2017-01-01 01:00 …

timezone ruby-on-rails

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

如何使用jQuery找到每个表格单元格的"可视位置"?

我有一个包含ROWSPAN和COLSPAN的HTML表.

如何使用jQuery找到每个单元格的"可视位置"?

例如,这是我的表的可视化表示,其中每个单元格填充了"视觉位置"算法应返回的内容:(
注意:我只关心其中的单元格<tbody>,列引用可以是整数,而不是字母字符,我只是这样做才能轻松突出问题)

+--+--+--+--+--+
|  |A |B |C |D |
+--+--+--+--+--+
|1 |A1|B1   |D1|
+--+--+--+--+  +
|2 |A2   |C2|  |
+--+     +--+  +
|3 |     |C3|  |
+--+--+--+--+--+
|4 |A4|B4|C4|D4|
+--+--+--+--+--+
|XYZ           |
+--+--+--+--+--+
Run Code Online (Sandbox Code Playgroud)

我已尝试实现第一个,但是单元格C3的引用是不准确的,因为它没有考虑ROWSPANS.第二个链接可以合并到第一个的解决方案,但我无法弄清楚如何.

我希望将此作为一个函数调用getCellLocation(cell),它将返回一个返回类似于以下位置的关联数组:

function getCellLocation(cell)
{
  var row_number = parseInt($(cell).parent().prevAll().length) + 1;
  var col_number = 1;
  $(cell).prevAll('td').each(function() {
      col_number += $(this).attr('colspan') ? parseInt($(this).attr('colspan')) : 1;
  });

  var location = new Array();
  location['row'] = row_number;
  location['col'] = col_number;
  location['index'] …
Run Code Online (Sandbox Code Playgroud)

html algorithm jquery html-table

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

通过启用MAMP中的常规日志,将每个MySQL查询记录到文件中

如何启用MySQL的常规日志以与MAMP一起使用?

我用它在我的Mac上运行Apache,MySQL和PHP,所以我可以通过UI打开/关闭/重启,而不是弄乱默认情况下安装在机器上的Apache或PHP.

在我的Mac上,我尝试在my.cnf文件中设置配置设置,以记录运行到文件的每个SQL查询.当我从终端内运行SHOW VARIABLES命令时,设置似乎已生效,如下面的输出所示.

问题:常规日志文件未填充.
当我实际执行 SQL查询或在MAMP服务器上重新加载从MySQL数据库读取数据的PHP页面时,不会创建或填充常规日志文件.

以下是我设置的my.cnf内容的一部分:

# The MySQL server
[mysqld]
#port       = 9999
socket      = /Applications/MAMP/tmp/mysql/mysql.sock
key_buffer = 16M
max_allowed_packet = 1M
table_cache = 64
sort_buffer_size = 512K
net_buffer_length = 8K
read_buffer_size = 256K
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 8M
bind-address = 127.0.0.1
general_log = 1
general_log_file = /Applications/MAMP/logs/mysql_general_sql.log
Run Code Online (Sandbox Code Playgroud)

这是运行SHOW VARIABLES语句的输出的一部分:

mysql> show variables;
+---------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+
| Variable_name                                     | Value                                                                                                                  |
+---------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+
| ... …
Run Code Online (Sandbox Code Playgroud)

mysql

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

Docker Swarm 中领导管理器节点上的服务放置

docker-compose.yml文件中,是否有一种方法可以将服务的放置限制为不仅是管理器节点,而且是领导者管理器节点?

例如,这将限制任何管理节点:

version: '3.5'
services:
  my_cool_service:
    image: meh
    deploy:
      placement:
        constraints:
          - "node.role == manager"
Run Code Online (Sandbox Code Playgroud)

是否有类似的约束提供如下功能:

node.manager_status_leader == yes
Run Code Online (Sandbox Code Playgroud)

docker docker-swarm

7
推荐指数
0
解决办法
927
查看次数

将自定义按钮添加到WMD编辑器

有没有办法向WMD编辑器添加自定义按钮以扩展编辑器的功能?

我想要添加的各种按钮的想法是:

  • 标记所选文本
  • 插入一些预定义文本

谢谢
Turgs

javascript markdown wysiwyg textarea wmd

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

我可以在Teradata中查询过程的RequestText吗?

Teradata有一个有用的视图dbc.tables,可用于查询对象.我用它来查看RequestText视图中的成功,但程序似乎编译有点不同.

当我查看RequestText一个过程(TableKind P)时,我得到的是这样的:

ALTER PROCEDURE '468137'xn.'546321987654321345646556213165468654654654'xn COMPILE /* mydb.procedurename */;
Run Code Online (Sandbox Code Playgroud)

这是对存储在别处的实际RequestText的引用吗?我怎么做到的?

我想实际用SQL查询它,而不是将其转储到文本文件中.

原因是因为我需要对它运行LIKE语句来搜索对特定表名的引用.将它转储到文本文件然后手动搜索文本文件是不方便的.

sql stored-procedures teradata

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

在MySQL SELECT语句中,派生字段如何利用SELECT列表中另一个字段的值?

在MySQL SELECT语句中,派生字段如何利用SELECT列表中另一个字段的值?

例如,运行以下查询时:

SELECT
 'tim' AS first_name
,first_name || ' example' AS full_name;
Run Code Online (Sandbox Code Playgroud)

我希望结果如下:

first_name, full_name
tim       , tim example
Run Code Online (Sandbox Code Playgroud)

相反,我收到以下错误:

Unknown column 'first_name' in 'field list'.
Run Code Online (Sandbox Code Playgroud)

有没有办法可以引用另一列?

谢谢
Turgs

mysql sql

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

如何确保用户只能在Yii中查看和访问自己的数据

在Yii中,有没有一种最好的方法来确保用户只能在Yii中查看和访问他们自己的数据?

我认为管理员应该能够看到任何东西,但就目前而言,我稍后会越过那座桥.

谢谢

security authorization yii

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

Rails 表单提交不在后台发生

我有一个 Rails 5.2 应用程序,我正在使用它form_with,它正在生成此 HTML:

<form id="post-0" class="" action="/posts.js" accept-charset="UTF-8" data-remote="true" method="post">
Run Code Online (Sandbox Code Playgroud)

表单成功提交给 PostController 的create操作。

  def create
    @post = current_user.account.posts.new(post_params)
    respond_to do |format|
      if @post.save
        format.html { redirect_to posts_path, notice: 'Post added.' }
        format.js { render :create, status: :created }
      else
        format.html { render :index }
        format.js { render :create, status: :unprocessable_entity }
      end
    end
  end
Run Code Online (Sandbox Code Playgroud)

那么渲染JS视图:
应用程序/视图/职位/ create.js.erb

alert('created');
Run Code Online (Sandbox Code Playgroud)

但是,在我的浏览器中,我确实被重定向到http://localhost:3000/posts.js了显示 javascript 代码的位置。意思是,表单提交似乎没有在后台发生。

我本来希望仍然停留在表单所在的页面上,出现一个 Javascript 警报,说“已创建”。

我错过了什么愚蠢的事情吗?在我看来,这一定是form_with我做得不对的事情。

我尝试将其换为, …

ajax ruby-on-rails

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

如何在Yii中更新用户登录时的TIMESTAMP?

每当用户登录我的网站(使用Yii框架构建)时,我希望能够更新last_login_at使用TIMESTAMP 调用的用户模型中的字段.

如何才能做到这一点?

我想actionLogin()在SiteController.php中需要某种类型的编辑.

php login yii

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

是否有可能需要无限循环的情况?

无限循环被教导为邪恶.有没有好用的?

当意外编码时,CPU达到峰值并且我想象内存也是如此,特别是如果在循环内部分配变量.

如果有很好的用途,那么这些问题是如何防止的?

algorithm loops infinite-loop

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