В моем проекте rails у меня есть пространство имен has_many через отношение Схема
models / school / contact.rb
class School::Contact < ApplicationRecord
belongs_to :school, class_name: '::School'
has_many :school_contact_emails, class_name: 'School::Contact::Email'
has_many :emails, through: :school_contact_emails, class_name: '::Email'
end
models / school / contact / email.rb
class School::Contact::Email < ApplicationRecord
belongs_to :school_contact, class_name: 'School::Contact'
belongs_to :email, class_name: '::Email'
end
models / email.rb
class Email < ApplicationRecord
has_many :school_contact_emails, class_name: 'School::Contact::Email'
has_many :school_contacts, through: :school_contact_emails, class_name: 'School::Contact'
end
Если я открою консоль рельсов
s = School::Contact.first
=> #<School::Contact id: 1, name: "Headmaster Name", surname: "Headmaster Surname", school_contact_role_id: 1, school_id: 2285, created_at: "2018-06-24 17:47:21", updated_at: "2018-06-24 17:47:21", creator_id: 1, updater_id: 1>
Если я поищу электронные письма
s.emails
Traceback (most recent call last):
ActiveRecord::StatementInvalid (PG::UndefinedColumn: ERROR: column school_contact_emails.contact_id does not exist)
Он говорит, что school_contact_emails.contact_id не существует, но столбец таблицы должен быть "school_contact_id"
ВотМиграция для школы :: Контактная информация :: Таблица электронной почты
class CreateSchoolContactEmails < ActiveRecord::Migration[5.1]
def change
create_table :school_contact_emails do |t|
t.references :school_contact, foreign_key: true
t.references :email, foreign_key: true
t.timestamps
t.userstamps
end
end
end
Любая помощь будет очень признательна