小编Sug*_*jan的帖子

Ruby 3.0.4 与 Postgres 14 抛出分段错误

我有

Ruby 3.0.4
Rails 6.1.7
pg 1.4.5
postgresql 14.6
Run Code Online (Sandbox Code Playgroud)

这是我的database.yml 文件

development:
adapter: postgresql
encoding: utf8
database: olio_development
username: postgres
password: password
pool: 5 
host: 127.0.0.1
port: 5432
gssencmode: disable
Run Code Online (Sandbox Code Playgroud)

当我运行 rake db:create 时,出现以下分段错误

/home/usr/.rvm/gems/ruby-3.0.4/gems/pg-1.4.5/lib/pg/connection.rb:626: [BUG] Segmentation fault at 0x00007fd79729a140
Run Code Online (Sandbox Code Playgroud)

ruby 3.0.4p208(2022-04-12 修订版 3fa771dded)[x86_64-linux]

-- Control frame information -----------------------------------------------
 c:0050 p:---- s:0275 e:000274 CFUNC  :connect_poll
c:0049 p:0543 s:0271 e:000270 METHOD /home/suganya/.rvm/gems/ruby-3.0.4/gems/pg-1.4.5/lib/pg/connection.rb:626
Run Code Online (Sandbox Code Playgroud)

连接失败。

我已经验证 postgres 正在运行并且位于主机 127.0.0.1 和帖子 5432 上。

请帮我解决这个分段错误?

postgresql ruby-on-rails ruby-on-rails-6.1 ruby-3

11
推荐指数
2
解决办法
3573
查看次数

Rails 按列分组并选择列

我有一个表 DinnerItem,其中包含 id、name、project_id、client_id、item_id 和 item_quantity 列。

我想获取数据 group_by item_id 列,该值应该只有 item_quantity 列值的格式

{ item_id1 => [ {item_quantity from row1}, {item_quantity from row2}],
  item_id2 => [ {item_quantity from row3}, {item_quantity from row4} ]
}
Run Code Online (Sandbox Code Playgroud)

如何在一个查询中实现它?

OfferServiceModels::DinnerItem.all.select('item_id, item_quantity').group_by(&:item_id)
Run Code Online (Sandbox Code Playgroud)

但这有格式

 {1=>[#<DinnerItem id: nil, item_id: 1, item_quantity: nil>, #<DinnerItem id: nil, item_id: 1, item_quantity: {"50"=>30, "100"=>10}>], 4=>[#<DinnerItem id: nil, item_id: 4, item_quantity: {"100"=>5, "1000"=>2}>}
Run Code Online (Sandbox Code Playgroud)

ruby postgresql group-by ruby-on-rails

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

Rails 迁移 - 将整数列更改为数组整数 - Postgres

我在提供者模型中有一个 Benefit_type 整数列,它是一个枚举列。

提供者.rb

enum: ['abc', 'bcd']
Run Code Online (Sandbox Code Playgroud)

现在我想迁移到 array_enum

提供者.rb

array_enum: {'abc': 0, 'bcd': 1}
Run Code Online (Sandbox Code Playgroud)

因此,为了适应这一更改,我想将列更改为整数数组。在我的迁移中,

change_column :providers, :benefit_type, :integer, array: true, default: {}, using: "(string_to_array(benefit_type, ','))"
Run Code Online (Sandbox Code Playgroud)

错误:

 Caused by:
PG::UndefinedFunction: ERROR:  function string_to_array(integer, unknown) does not exist
LINE 1: ...ALTER COLUMN "benefit_type" TYPE integer[] USING (string_to_...
                                                         ^
HINT:  No function matches the given name and argument types. You might need to add explicit 
type casts.
Run Code Online (Sandbox Code Playgroud)

还尝试过:

   change_column :providers, :benefit_type, :integer, array: true, default: []
Run Code Online (Sandbox Code Playgroud)

错误:

 Caused by:
ActiveRecord::StatementInvalid: PG::DatatypeMismatch: …
Run Code Online (Sandbox Code Playgroud)

postgresql casting ruby-on-rails

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

将 Java Set&lt;String&gt; 转换为 Java 逗号分隔字符串

我有一个java集

private Set<String> packageCategories;
Run Code Online (Sandbox Code Playgroud)

它的值为 ['Abc','Def']。我想在 UI 中显示 packageCategories 的值,该值现在显示为 ['Abc','Def'],但我想将其简单地显示为 'Abc', 'Def'。

我试过

String.join(",", packageCategories);
context.put("packageCategories", packageCategories);
Run Code Online (Sandbox Code Playgroud)

我收到编译错误

 incompatible types: java.util.Set<java.lang.String> cannot be converted to java.lang.String.
Run Code Online (Sandbox Code Playgroud)

我怎样才能实现这个目标?我在 StackOverflow 中搜索,它有将 List 转换为逗号分隔字符串的答案。但我没有找到任何将 Set 转换为逗号分隔字符串的答案。

以最快的方式将 Set<String> 的内容放入单个字符串并用空格分隔单词中给出的答案?对我不起作用。

PS:我不是JAVA开发人员。

java string set

3
推荐指数
2
解决办法
5886
查看次数

Ruby中没有正面或负面的两个数字之间的区别

我想找到两个数字(正整数)之间的差异而不返回任何正号或负号.

就像

Diff(2,5) => 3
Diff(5,2) => 3.
Run Code Online (Sandbox Code Playgroud)

并不是

(2 - 5) => -3
Run Code Online (Sandbox Code Playgroud)

ruby subtraction absolute-value

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