Ruby on rails 如何在另一个表值中使用表ID?

Ruby on rails 如何在另一个表值中使用表ID?,ruby-on-rails,ruby,ruby-on-rails-2,Ruby On Rails,Ruby,Ruby On Rails 2,我正在尝试搜索表policy_logs中是否有pdf 这是我的桌子: |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_日志中的所有列policy

我正在尝试搜索表policy_logs中是否有pdf

这是我的桌子:

|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_日志中的所有列policy_id,如policies表中的“id”

这里是我的控制器:

@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
我尝试了此操作,但得到的值为空:

@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))
SELECT policy_id as pdf FROM `policy_logs` GROUP BY policy_id
SELECT * FROM `policies` WHERE (id IN (1))
SELECT policy_id as pdf FROM `policy_logs` GROUP BY policy_id
SELECT * FROM `policies` WHERE (id IN (3))
还尝试使用数组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 (NULL),(NULL),(NULL),(NULL))
SELECT policy_id as pdf FROM `policy_logs` GROUP BY policy_id
SELECT * FROM `policies` WHERE (id IN (1))
SELECT policy_id as pdf FROM `policy_logs` GROUP BY policy_id
SELECT * FROM `policies` WHERE (id IN (3))
还尝试使用数组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 (NULL),(NULL),(NULL),(NULL))
SELECT policy_id as pdf FROM `policy_logs` GROUP BY policy_id
SELECT * FROM `policies` WHERE (id IN (1))
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
也许还有其他的搜索方法

请有人能帮我吗?

试试这样:

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