Я практикую свои навыки RoR и пытаюсь разработать приложение к уже созданной БД. Он имеет 4 таблицы: testplans, testplan_tcversions, * test_project * и узлы.неинициализированная константа NameError при использовании has_many
Я код 2 модели для этого таблиц:
class TestPlan < ActiveRecord::Base
self.table_name= 'testplans'
belongs_to :test_project
has_many :test_suites, foreign_key: :testplan_id, inverse_of: :test_plan
has_one :node, foreign_key: :id, inverse_of: :test_plan
end
и
class TestSuite < ActiveRecord::Base
self.table_name='testplan_tcversions'
belongs_to :test_plan
has_one :node, foreign_key: id, inverse_of: :test_collection
end
Но я получаю исключение неинициализированный постоянной TestPlan :: TestSuite при попытке: @suits=TestPlan.find(4906).test_suites
Я нашел много ответов, которые Модели должны быть единственными, а таблица должна иметь множественное число, но мои имена моделей являются единственными, имена таблиц, которые я указываю в self.table_name.
Что я сделал не так?
UPD
Это моя дб: схема: дамп
create_table "testplans", force: true do |t|
t.integer "testproject_id"
t.text "notes"
t.integer "active"
t.integer "is_open"
t.integer "is_public"
t.text "api_key"
end
create_table "testplan_tcversions", force: true do |t|
t.integer "testplan_id"
t.integer "tcversion_id"
t.integer "node_order"
t.integer "urgency"
t.integer "platform_id"
t.integer "author_id"
t.datetime "creation_ts"
end
Я использую уже созданную БД и не писал миграцию, потому что у БД есть все таблицы с полями и данными. TestSuite has'n _test_plan_id_, но _testplan_id_, и я указываю его на 'foreign_key:: testplan_id'. Названия таблиц не соответствуют имени модели, и я использую 'self.table_name =' –