我遇到了问题,我有两个型号
class Department < ActiveRecord::Base
belongs_to :school
has_many :courses
end
class Course < ActiveRecord::Base
has_many :users
has_many :departments
end
我的迁移
class CreateCourses < ActiveRecord::Migration
...
t.string :course_name
t.string :course_code
t.integer :department_id
...
class CreateDepartments < ActiveRecord::Migration
t.string :department_name
t.integer :department_duration
t.string :department_code
t.integer :school_id
请问我如何获取课程所属的部门名称,这就是我所拥有的
<% @courses.each do |course| %>
<%= course.department_name %>
给出
undefined method `department_name' for #<Course:0x43bb280>
感谢您的帮助
答案 0 :(得分:0)
从您的迁移中看,您的课程模型应该具有belongs_to :department
语句而不是has_many :departments
语句。
假设这就是你的意思,你得到那个特定错误信息的原因是因为你的课程模型没有部门名称(那会很奇怪吗?这是一门课程,而不是一个部门)。 但它确实属于一个部门,而该部门有一个名称。这样,您可以像这样编写代码:
<% @courses.each do |course| %>
<%= course.department.department_name %>
<% end %>
这将从课程中获得相关部门,然后向部门询问其名称。
如果您执行此类操作,建议您确保在数据库查询中包含部门(在相应的控制器中)。否则,您最终会得到代码,该代码针对上述循环的每次迭代运行至少一个数据库查询。
另外,我只需要调用部门名称name
的列,因为它属于一个单独的表。这样您就可以编写course.department.name
而不是course.department.department_name
。