【发布时间】:2022-08-19 00:54:29
【问题描述】:
在test.save! 升级到ruby 3.1 后,我有这种方法给我一个错误ArgumentError: wrong number of arguments (given 1, expected 0)。
def seed_test_program
test = TestProgram.find_or_initialize_by(
name: \"Program\",
code: :program
)
test.metadata[\"status_types\"] = [
\"enrolled\", \"excluded\", \"rejected\", \"not_enrolled\"
]
test.metadata[\"status_reasons\"] = {
\"excluded\" => [
\"reason 1\",
\"reason 2\",
\"reason 3\"
],
\'rejected\' => [
\"reason 1\",
\"reason 2\",
\"reason 3\"
],
\"not_enrolled\" => [
\"reason 1\",
\"reason 2\",
\"other\"
]
}
test.save!
Test.program.reload
end
我努力了
test = TestProgram.find_or_initialize_by({
name: \"Program\",
code: :program
})
和
options = {
name: \"Program\",
code: :program
}
TestProgram.find_or_initialize_by(**options)
(此方法调用如下Seeds::TestProgram.seed 其中种子函数包含seed_test_program)
但它一直给我同样的错误。我该如何解决?
堆栈跟踪
ArgumentError: wrong number of arguments (given 1, expected 0)
/**/app/services/seeds/test_programs.rb:138:in `seed_test_program\'
/**/app/services/seeds/test_programs.rb:18:in `seed\'
/**/app/services/seeds/test_programs.rb:9:in `initialize\'
/**/app/services/seeds/test_programs.rb:5:in `new\'
/**/app/services/seeds/test_programs.rb:5:in `seed\'
/**/db/seeds.rb:51:in `<main>\'
/**/db/sample_data/test_environment.rb:13:in `<main>\'
/**/lib/tasks/sample_data.rake:6:in `block (4 levels) in <main>\'
Tasks: TOP => db:reset => db:setup => db:seed
(See full trace by running task with --trace)
测试程序
module Seeds
class TestPrograms
def self.seed
self.new
end
def initialize
seed
end
private
def seed
seed_test_program
end
def seed_test_program
test = TestProgram.find_or_initialize_by(
name: \"Program\",
code: :program
)
test.metadata[\"status_types\"] = [
\"enrolled\", \"excluded\", \"rejected\", \"not_enrolled\"
]
test.metadata[\"status_reasons\"] = {
\"excluded\" => [
\"reason 1\",
\"reason 2\",
\"reason 3\"
],
\'rejected\' => [
\"reason 1\",
\"reason 2\",
\"reason 3\"
],
\"not_enrolled\" => [
\"reason 1\",
\"reason 2\",
\"other\"
]
}
test.save!
Test.program.reload
end
end
end
种子.rb
# Seed Test Programs
Seeds::TestPrograms.seed
-
将完整的堆栈跟踪添加到您的问题中。
-
当然添加了@smathy
-
请在代码中显示该行来电
seed_test_program方法。我猜它使用参数调用,但该方法不需要参数。 -
添加了更多信息@LesNightingill
-
\'test_programs\' 表中 \'code\' 列的列类型是什么?
标签: ruby-on-rails ruby ruby-3 ruby-3.1