2014-02-12 41 views
0

我想在表policy_logs中搜索,如果它有pdf。如何在另一個表值中使用一個ID表?

這裏我表:

|policies| 
    |id| |name| 
    1  abc 
    2  def 
    3  ghi 

|policy_logs| 
    |id| |name| |policy_id| 
    1 ab.pdf 1 
    2 cd.pdf 1 
    3 ef.pdf 3 
    4 ij.pdf 3 

我試圖使用所有列policy_id從像 「身份證」 policy_logs在政策表

這裏我的控制器:

@pdf = PolicyLog.find(:all,:select=>['policy_id as pdf'],:group=>['policy_id']) 
@policy = Policy.find(:all,:conditions=>['id IN (?)',@pdf ]) 

這裏我的型號:

class Policy < ActiveRecord::Base 
    has_many :policy_logs 
end 

class PolicyLog < ActiveRecord::Base 
    belongs_to :policy 
end 

這裏我的觀點:

<% @policy.each do |p| %> 
    <%= p.id %> 
    <%= p.name %> 
<% end %> 

這是要我要像結果

|id| |policy_id| 
    1  1 
    3  3 

我試過,但越來越NULL值:

@pdf = PolicyLog.find(:all,:select=>['policy_id as pdf'],:group=>['policy_id']) 
@policy = Policy.find(:all,:conditions=>['id IN (?)',@pdf ]) 

這裏是日誌:

SELECT policy_id as pdf FROM `policy_logs` GROUP BY policy_id 
SELECT * FROM `policies` WHERE (id IN (NULL),(NULL),(NULL),(NULL)) 

使用數組0也試過:

@pdf = PolicyLog.find(:all,:select=>['policy_id as pdf'],:group=>['policy_id']) 
@policy = Policy.find(:all,:conditions=>['id IN (?)',@pdf[0].pdf ]) 

但我只有一個結果,這裏是日誌:

SELECT policy_id as pdf FROM `policy_logs` GROUP BY policy_id 
SELECT * FROM `policies` WHERE (id IN (1)) 

使用陣列1也試過:

@pdf = PolicyLog.find(:all,:select=>['policy_id as pdf'],:group=>['policy_id']) 
@policy = Policy.find(:all,:conditions=>['id IN (?)',@pdf[1].pdf ]) 

但我只得到了一個結果,這裏是日誌:

SELECT policy_id as pdf FROM `policy_logs` GROUP BY policy_id 
SELECT * FROM `policies` WHERE (id IN (3)) 

最後我試圖

@pdf= PolicyLog.find(:all,:select=>['policy_id as pdf'],:group=>['policy_id']) 
@search= Policy.find(:all,:conditions=>['id IN (?)',@pdf.each do |a| { a.pdf} ]) 

,但我得到

odd number list for Hash. 
unexpected ']', expecting kEND 

也許還有其他的方法來搜索。

請有人可以幫助我嗎?

回答

2

嘗試這樣的:

@search = Policy.find(:all,:conditions => {:id => @pdf.map{|p| p.pdf}) 

或者:

@search = Policy.find(:all,:conditions => {:id => @pdf}) 
+0

感謝您的幫助 –

相關問題