![](/img/trans.png)
[英]Why am I receiving ArgumentError (wrong number of arguments (given 0, expected 1) for destroy action? Rails 5.2
[英]Why am I getting `ArgumentError: wrong number of arguments (given 1, expected 0)` on save?
在 test.save 升級到 ruby 3.1 后,我有這種方法給我一個錯誤ArgumentError: wrong number of arguments (given 1, expected 0)
test.save!
.
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
其中種子 function 包含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
解決了。 奇怪的是,如果你這樣做了
test = TestProgram.find_or_create_by(
name: "Program",
code: :program
)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.