2011-09-03 56 views
0

我有一個問題,我有兩個型號ROR協會問題

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

從你的遷移,它看起來就好像你的課程模式應該有一個belongs_to :department聲明,而不是has_many :departments聲明。

假設這就是你的意思,你得到那個特定錯誤信息的原因是因爲你的課程模型沒有一個部門名稱(這將是不可思議的權利?這是一門課程,而不是一個部門)。 但它屬於一個部門,而部門有一個名稱。這樣,你可以這樣寫你的代碼:

<% @courses.each do |course| %> 
    <%= course.department.department_name %> 
<% end %> 

這將從課程中獲得相關部門,然後詢問部門的名稱。

如果你這樣做,建議確保在你的數據庫查詢中包含這些部門(在適當的控制器中)。否則,您將得到至少爲上述循環的每次迭代運行至少一個數據庫查詢的代碼。

此外,我只是打電話給部門名稱name列,因爲它屬於一個單獨的表。這樣你會寫course.department.name而不是course.department.department_name

+0

謝謝你,在問這個問題後觀察到我的錯誤分鐘,你的回答給我的理解增加了更多的光線 – dev