2010-03-20 111 views
1

我遇到了这个问题。导轨协会问题

我需要得到一排属于士兵的初选阵列。所以,一旦我得到所有的士兵在一个排: @company = Company.find_by_id(1) @platoons = @ company.platoons

<% @platoons.each do |p| %> 
    <%= p.soldiers.primaries.find(:all,:conditions => ["relationship = ? AND contacted = ?", 'Spouse', 'Yes'])) %> 
<% end %> 

***因此,有对初选没有一种方法,我认为这是因为我试图调用一个数组上的关联。士兵们有一个排,但初选不会,他们只与那个排中的士兵有联系。我该怎么做呢?我需要它返回一系列Primaries。提前致谢!

class Soldier < ActiveRecord::Base 
    belongs_to :company 
    belongs_to :platoon 
    has_many :primaries, :dependent => :destroy 
end 


class Platoon < ActiveRecord::Base 
    belongs_to :company 
    belongs_to :battalion 
    has_many :soldiers 
end 

class Primary < ActiveRecord::Base 
    belongs_to :soldier 
    belongs_to :company 
end 

回答

0

你可以通过士兵循环:

<% @platoons.each do |platoon| %> 
    <% p.soldiers.each do |soldier| %> 
    <%= soldier.primaries.find(:all,:conditions => ["relationship = ? AND contacted = ?", 'Spouse', 'Yes'])) %> 
    <% end %> 
<% end %> 

这不是最佳的或优雅。一个更好的解决办法是:

class Platoon < ActiveRecord::Base 
    belongs_to :company 
    belongs_to :battalion 
    has_many :soldiers 
    has_many :primaries, :through => :soldiers 
end 

那么你的看法是:

<% @platoons.each do |platoon| %> 
    <%= platoon.primaries.find(:all,:conditions => ["relationship = ? AND contacted = ?", 'Spouse', 'Yes'])) %> 
<% end %> 
+0

非常感谢,那排协会应该是真的很明显我。 – looloobs 2010-03-23 05:23:23