0

我有一个多态关联:我的用户模型可以是“学生”类型或“雇主”类型。我正在尝试在学生模型和另一个称为“项目”模型的模型之间建立 has_and_belongs_to_many 关联。当我尝试打电话时:

控制器:

@my_projects = current_user.projects 

看法:

<% @my_projects.where(state: :posting).each do |project| %>
    <%= project.students %><br>
<% end %> 

有人告诉我:

PG::UndefinedTable: ERROR:  relation "projects_users" does not exist

我已经定义了一个名为“projects_students”的表,我认为它应该可以工作。我不想有一个“project_users”表,因为该表仅适用于学生,不适用于雇主。我该如何解决?这是我的模型:

class Student < User
    has_and_belongs_to_many :projects
end

-

class Project < ActiveRecord::Base
    has_and_belongs_to_many :students
end
4

1 回答 1

0

您正在@my_projectsUser对象的起始上下文构建。如果您从 Rails 控制台运行User.first.projectsStudent.first.projects您将看到一个尝试projects_users用作连接表,而另一个尝试使用projects_students. 因此,不要像我最初建议的那样在模型中强制使用特殊的“join_table”名称,您可以在查找项目时执行以下操作:

@my_projects = current_user.becomes(Student).projects
于 2013-11-14T22:53:31.753 回答