标签: rails-postgresql

Rails和PostgreSQL中的TimeZone和DST

背景

具有默认created_at列的文章模型

滑轨 config.time_zone = 'Warsaw'

我有一篇关于created_at =当地时间2012-08-19 00:15(UTC中的2012-08-18 22:15)的文章。

目标

接收2012-08-19(当地时间)创建的所有文章。

我的(无法正常工作)解决方案

Article.where(
  "date_trunc('day', created_at AT TIME ZONE '#{Time.zone.formatted_offset}')
   = '#{Date.civil(2012, 8, 19)}'"
)
Run Code Online (Sandbox Code Playgroud)

生成SQL:

SELECT "articles".* FROM "articles"
WHERE (date_trunc('day', created_at AT TIME ZONE '+01:00') = '2012-08-19')
Run Code Online (Sandbox Code Playgroud)

并返回一个空集。但是,如果我在psql中运行相同的查询,它将返回一条文章...,这使我感到困惑。

我在做什么错以及如何解决?

postgresql datetime ruby-on-rails dst rails-postgresql

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

Rails & Devise - 跨子域自动登录

设置

我有一个 Rails 应用程序,用户在其中注册了一个帐户,并为他们创建了一个子域。然后他们可以进入子域并使用他们的凭据登录。工作流程如下所示:

  1. 用户访问基域填写包含电子邮件/用户名/密码和子域字段的表单
  2. 根据提交的信息,服务器在全局/公共数据库中创建一个帐户。服务器然后创建一个特定于该特定子域/帐户的数据库,并将用户记录存储在其中。
  3. 用户被重定向到他们的子域,并要求登录。

(注意:为了实现单独的“数据库”,我使用的是 postgres 模式,但这应该无关紧要。)

问题

我的问题涉及到第3步。我想将用户重定向到他们的子域名和记录它们自动而不是要求他们登录的。不过,我希望在所有子域共享一个会话。

我想以某种方式安全地传输自动登录请求。

可能的解决方案

我曾考虑使用一次性随机令牌,将其存储在 cookie 和users表中。用户成功创建帐户后,他将被重定向到子域。届时,令牌将被消耗/销毁,用户将自动登录。

我还需要有一个较短的窗口,以便在到期前使​​用令牌。

想法?谢谢!

ruby activerecord ruby-on-rails devise rails-postgresql

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

如何使用Rails为所有迁移文件设置默认的'uuid-ossp'扩展名?

如何为所有迁移文件设置默认的'uuid-ossp'扩展名?

enable_extension'uuid-ossp'

我正在使用Ruby 2.1和Rails 4以及PostgreSQL.

ruby ruby-on-rails rails-postgresql ruby-on-rails-3.2 ruby-on-rails-4

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

在Rails中使用Sqlite3测试数据库和Postgres开发/生产数据库

我目前有一个Rails项目,我将其部署到使用postgres数据库的生产服务器上。我在Windows中开发我的rails项目,这意味着,如果要在本地进行测试,则必须将database.yml文件中的所有数据库从postgres更改为sqlite3(因为将Windows设置为运行postgres服务器似乎是痛苦)。

我想做的是格式化我的database.yml像这样:

development:
  adapter: postgresql
  encoding: utf8
  database: <%= begin IO.read("/home/www-data/.db/.dev_name") rescue "" end %>
  pool: 5
  username: <%= begin IO.read("/home/www-data/.db/.user") rescue "" end %>
  password: <%= begin IO.read("/home/www-data/.db/.pass") rescue "" end %>

# Warning: The database defined as "test" will be erased and
# re-generated from your development database when you run "rake".
# Do not set this db to the same as development or production.
test:
  adapter: sqlite3
  database: db/test.sqlite3
  pool: 5
  timeout: 5000

production:
  adapter: postgresql
  encoding: …
Run Code Online (Sandbox Code Playgroud)

database sqlite ruby-on-rails ruby-on-rails-3 rails-postgresql

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

SQL 计算字符串中的数字

我有一个包含以下信息的表格。

description: adjkfa34kj34kj33j4k3jk4
description: adfkjjkdf34_3434kjkjkj3
description: akjdfkjadfkjadkjfkjadfj
description: 34394394093040930949039
Run Code Online (Sandbox Code Playgroud)

我将如何编辑下面的 SQL 查询来计算字符串中的位数(即 [0-9])?

select description as num_count
from posts;
Run Code Online (Sandbox Code Playgroud)

sql postgresql rails-postgresql

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