2014-02-12 42 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

感谢您的帮助 –

相关问题