I have this method that gives me a error ArgumentError: wrong number of arguments (given 1, expected 0)
after upgrading to ruby 3.1 at 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
I have tried
test = TestProgram.find_or_initialize_by({
name: "Program",
code: :program
})
and
options = {
name: "Program",
code: :program
}
TestProgram.find_or_initialize_by(**options)
(this method is called as follows Seeds::TestProgram.seed
where the seed function contains seed_test_program
)
but it keeps giving me the same error. How do I fix this?
Stack Trace
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)
Test Programs
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
Seeds.rb
# Seed Test Programs
Seeds::TestPrograms.seed
Solved it. Bizarrely it works if you do