我的應用程序使用:has_many:通過關聯,我無法弄清楚如何最有效地加載和顯示關聯兩端的數據和關聯本身。渴望加載屬性加入模型軌道
這裏是我的課:
class Person < ActiveRecord::Base
has_many :people_ranks
has_many :ranks, :through => :people_ranks
has_many :institutions_people
has_many :institutions, :through => :institutions_people
belongs_to :school
belongs_to :department
end
class Institution < ActiveRecord::Base
has_many :institutions_people
has_many :people, :through => :institutions_people
end
class InstitutionsPerson < ActiveRecord::Base
belongs_to :institution
belongs_to :person
end
及其相應的模型:
create_table :people, :force => true do |t|
t.string :name
t.string :degree
t.integer :year_grad
t.integer :year_hired
end
create_table :institutions, :force => true do |t|
t.string :name
t.integer :ischool
end
create_table :institutions_people, :id => false do |t|
t.integer :institution_id
t.integer :person_id
t.string :rel_type
end
我想說明的東西,如@ person.year_hired,@ person.institution.name一個人的機構信息,和@ person.institution.institutions_people.rel_type(其中rel_type是「畢業」或「僱傭:)」,但我知道第三部分將不起作用。在person_controller的show位中使用以下內容:
@person = Person.find(params[:id], :include => [:school, :department, :institutions_people, :people_ranks, {:institutions_people => :institution}, {:people_ranks => :rank}])
使我可以訪問@ person.institutions和@ person.institutions_people,但是如何將連接的rel_type屬性連接到人 - 機構關係? (我來自PHP,現在如何構建SQL並通過它循環,但RoR讓我難住。)
我在「急切加載」和「與:has_many:通過關聯尋找幫助「,但我得到關於建立協會的答案。我的問題實際上是在關聯數據存在後訪問關聯數據。我的應用使用靜態數據,我並不擔心更新,銷燬或創建方法。感謝您的幫助!
Thanks @Rick我最終使用@rel_inst = @ me.institutions_people立即獲得了許多機構。奇蹟般有效。我感謝您的幫助! – Libby 2011-02-08 21:28:57