小编rii*_*rii的帖子

Rails迁移更改列以使用Postgres数组

我试图更改我的数据库中的列,以便它可以使用Postgres数组数据类型.目前,表列的类型为string.

我使用以下迁移来转换它:

def change
  change_column :table, :dummy_column, :text, array: true, default: []
end
Run Code Online (Sandbox Code Playgroud)

但是我收到以下错误:

bundle exec rake db:migrate
rake aborted!
An error has occurred, this and all later migrations canceled:

PG::Error: ERROR:  column "dummy_column" cannot be cast automatically to type     character varying[]
HINT:  Specify a USING expression to perform the conversion.
: ALTER TABLE "table" ALTER COLUMN "dummy_column" TYPE character varying(255) 
Tasks: TOP => db:migrate
Run Code Online (Sandbox Code Playgroud)

ruby migration postgresql ruby-on-rails

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

在 Rails 中设置 session_id cookie SameSite 属性

我正在尝试在 Rails 5.0.7.2 应用程序中的会话 cookie 中设置 SameSite 属性,但在确定在何处以及如何设置时遇到问题。

看起来 Rails 6.1 将引入一种全局确定 SameSite 保护级别的方法,请参阅: https: //github.com/rails/rails/commit/cd1aeda0a9dc15f09d7bf1b8b59e2ce07946f031。也就是说,如何在之前的版本中进行设置?

SameSite 的处理方式将改变即将到来的 Chrome 版本 80,我正在尝试为此做好准备,特别是因为它涉及:

“用于跨站点使用的 Cookie 必须指定 SameSite=None;确保能够包含在第三方上下文中。”

请参阅https://web.dev/samesite-cookie-recipes/了解更多信息。

ruby-on-rails devise ruby-on-rails-5 samesite

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

计划的动态Resque计划程序永远不会启动工作程序

使用resque-scheduler根据用户的输入set_schedule动态cron作业时,似乎设置了计划,但工作人员实际上从未按设定的计划启动.

在Resque配置中,dynamic设置为true,如下所示:Resque :: Scheduler.dynamic = true我正在设置如下调度:

  name = business.name + '_employee_import'
  config = {}
  config[:class] = 'ImporterWorker'
  config[:args] = business.id.to_s
  config[:cron] = cron_converter
  config[:persist] = true
  Resque.set_schedule(name, config) 
Run Code Online (Sandbox Code Playgroud)

如果我在命令行中执行:

  Resque.get_schedule("business_employee_import") 
Run Code Online (Sandbox Code Playgroud)

我明白了:

  {"class"=>"MyWorker", "args"=>"87", "cron"=>"19 18 * * * *"}
Run Code Online (Sandbox Code Playgroud)

但到了下午6点19分,工人才开始.我有一个工人正在运行,但工作永远不会被接收,我不知道为什么或如何排除故障.在我看来这应该工作.我也尝试将resque-scheduler更新到最新版本,但没有运气.

感谢您提供的任何帮助.

ruby ruby-on-rails resque resque-scheduler

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

在 Ruby 中,为什么 end_with?("") 对于任何字符串总是返回 true?

最近,我在编写一些代码时遇到了 Ruby 语言的一些奇怪问题。true事实证明,如果您检查它是否end_with?为空字符串,则任何字符串都会返回。这是为什么?对我来说,这似乎违反直觉:

"hello".end_with?("")
=> true
Run Code Online (Sandbox Code Playgroud)

返回真。有一个测试用例明确检查该方法end_with?

我认为只""应该end_with? ""。但可能有一些我不知道的事情。我只是好奇为什么这是预期的行为?

ruby

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