2013-06-27 34 views
0
- !ruby/object:Pacdoc 
    attributes: 
    id: 5 
    pac_id: 5 
    doc_id: 1 
    created_at: 2013-06-26 12:07:33.263881000 Z 
    updated_at: 2013-06-26 12:07:33.263881000 Z 

- !ruby/object:Pacdoc 
    attributes: 
    id: 6 
    pac_id: 5 
    doc_id: 2 
    created_at: 2013-06-26 12:07:33.266881000 Z 
    updated_at: 2013-06-26 12:07:33.266881000 Z 

值已經收集在可變@pdocs上述數據,並能夠挑選出這些值的DOC_ID檢索與基準數據以可變

<%= @pdocs.each do |a| %> 
    <%= b = a.doc_id %> 
<% end%> 

現在想以檢索'doc'的結構doc_id中的數據,名稱:字符串下面是型號

models 
class Pacdoc < ActiveRecord::Base 
    attr_accessible :doc_id, :pac_id 

    belongs_to :pac 
    belongs_to :doc 
end 

class Pac < ActiveRecord::Base 
    attr_accessible :name 

    validates :name, :presence => :true 

    has_many :pacdocs 
    has_many :docs, :through => :pacdocs 
end 

class Doc < ActiveRecord::Base 
    attr_accessible :name 

    validates :name, :presence => :true 

    has_many :pacdocs 
    has_many :pacs, :through => :pacdocs 
end 

回答

0

我不確定我是否理解你想要的,但我想你想從Doc模型中檢索數據,其中Pacdoc中的外鍵匹配。您實際上不需要手動匹配ID,ActiveRecord會爲您處理。要檢索的名稱Doc你只是做:

<%= @pdocs.each do |a| %> 
    <%= a.doc.name %> 
<% end%> 

雖然這樣做的時候,要小心N + 1個查詢。

+0

謝謝你馬里奧,這工作正是我想要的,你可以建議如何克服約束(N + 1查詢) – diva

+0

N + 1查詢的問題是相當簡單的。我建議你閱讀Rails指南的以下部分。它解釋了N + 1查詢是什麼以及如何避免它們。 http://guides.rubyonrails.org/active_record_querying.html#eager-loading-associations – mario