Зависимое уничтожение пространства имен модели Rails вызывает ошибку mysql неизвестное поле
У меня есть несколько моделей в отдельной папке с именем jira (instance.rb, generic_field.rb и т. Д.). Все они имеют пространство имен в JIRA, например, JIRA::Instance Схема БД для таблиц: В моей консоли rails я создаю объект JIRA::Instance, и когда я пытаюсь уничтожить его, я получаю это: Почему ActiveRecord использует class JIRA::GenericField < ActiveRecord::Base
self.table_name = "jira_generic_fields"
belongs_to :jira_instance, class_name: JIRA::Instance
end
class JIRA::Instance < ActiveRecord::Base
self.table_name = "jira_instances"
has_many :jira_generic_fields, dependent: :destroy, class_name: JIRA::GenericField
end
create_table "jira_generic_fields", force: true do |t|
t.string "jira_id"
t.string "name"
t.integer "jira_instance_id", null: false
end
create_table "jira_instances", force: true do |t|
t.string "jira_link"
t.string "crowd_link"
end
ActiveRecord::StatementInvalid: Mysql2::Error: Unknown column 'jira_generic_fields.instance_id' in 'where clause': SELECT `jira_generic_fields`.* FROM `jira_generic_fields` WHERE `jira_generic_fields`.`instance_id` = 1
jira_generic_fields
,instance_id
вместо jira_generic_fields
,jira_instance_id
и как я могу это исправить, сохраняя при этом модели под JIRA
Пространство имен?
1 ответ
В конце концов, указав Foreign_key в моделях, решил эту проблему...
class JIRA::GenericField < ActiveRecord::Base
self.table_name = "jira_generic_fields"
belongs_to :jira_instance, foreign_key: 'jira_instance_id', class_name: JIRA::Instance
end
class JIRA::Instance < ActiveRecord::Base
self.table_name = "jira_instances"
has_many :jira_generic_fields, dependent: :destroy, foreign_key: 'jira_instance_id', class_name: JIRA::GenericField
end
Мне это не очень нравится, но сейчас это нужно сделать.