У меня есть модель отношений, в которой студенты и работодатели могут вступать в отношения при обращении к проекту. Вот модели:Почему моя связь базы данных has_one не работает в рельсах?
class Student < User
has_many :relationships, dependent: :destroy
has_many :employers, through: :relationships
end
class Employer < User
has_many :projects
has_many :relationships, dependent: :destroy
has_many :students, through: :relationships
end
class Relationship < ActiveRecord::Base
has_one :project
belongs_to :employer
belongs_to :student
validates_uniqueness_of :project_id, :scope => [:employer_id, :student_id]
end
class Project < ActiveRecord::Base
belongs_to :employer
end
Состояние - столбец в таблице проектов, который автоматически устанавливается равным «проводке». Я пытаюсь показать все отношения, у которых есть проект с состоянием ==: posting. Вот мой взгляд код:
<% @relationships.each do |relationship| %>
<% if relationship.project.state == :posting %>
<%= relationship.project.inspect %>
<% end %>
<% end %>
Кроме того, в контроллер для этой точки зрения:
@relationships = Relationship.all
Когда я пытаюсь открыть окно, я получаю:
PG::UndefinedColumn: ERROR: column projects.relationship_id does not exist
Что Безразлично Для меня смысл, так это то, что я не смотрю в таблице проектов для столбца relationship_id. Мой код должен найти проект из отношения, а затем найти столбец состояния. У меня есть отношения has_one: project, но у меня нет: проекты принадлежат отношениям, потому что проект не нуждается в отношениях, чтобы существовать. Я уверен, что мои отношения с базой данных правильные. Как исправить мой код просмотра? Или, если мои отношения db неправильны, что не так?
Обновление Я забыл упомянуть, что работодатель и ученик являются моделями пользователей с помощью полиморфной ассоциации. Модель пользователя имеет столбец типа, который может быть либо студентом, либо работодателем.
Хм, проблема в том, что есть много отношений, которые могут иметь один и тот же проект. – Philip7899
Тогда ваши отношения должны быть 'own_to: project', и ваш проект должен' has_many: relationship'. –