HABTM不使用rails中的多态关联

时间:2013-11-14 22:20:23

标签: ruby-on-rails ruby-on-rails-4 rails-activerecord polymorphic-associations has-and-belongs-to-many

我有一个多态关联:我的用户模型可以是'student'类型,也可以是'employer'类型。我试图在学生模型和另一个称为“项目”模型的模型之间建立一个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

1 个答案:

答案 0 :(得分:0)

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

@my_projects = current_user.becomes(Student).projects