Ruby on rails 如何检查是否在值数组中找到值

Ruby on rails 如何检查是否在值数组中找到值,ruby-on-rails,ruby,Ruby On Rails,Ruby,我想执行一个if条件,其中,如果在值数组(@associated\u linked\u pub)中找到linkedpub.LPU\u ID),则执行一些操作 我尝试了以下方法,但语法不正确 任何建议都欢迎1.非常感谢 <% for linkedpub in Linkedpub.find(:all) %> <% if linkedpub.LPU_ID IN @associated_linked_pub %> # do action <%en

我想执行一个if条件,其中,如果在值数组(
@associated\u linked\u pub
)中找到
linkedpub.LPU\u ID
),则执行一些操作

我尝试了以下方法,但语法不正确

任何建议都欢迎1.非常感谢

<% for linkedpub in Linkedpub.find(:all) %>
   <% if linkedpub.LPU_ID IN @associated_linked_pub  %>
       # do action
   <%end%>
<%end%>

#行动
您可以使用
数组#include?

所以

编辑

如果
@associated\u linked\u pub
是ActiveRecord对象的列表,请尝试以下操作:

if @associated_linked_pub.map{|a| a.id}.include? linkedpub.LPU_ID
  ...
编辑

更详细地看你的问题,你所做的似乎效率很低,无法扩展。相反,你可以

对于Rails 3.0:

Linkedpub.where(:id => @associated_linked_pub)
对于Rails 2.x:

LinkedPub.find(:all, :conditions => { :id => @associated_linked_pub })
Rails将自动在查询中创建SQL,例如:

SELECT * FROM linkedpubs WHERE id IN (34, 6, 2, 67, 8)

如果
@associated\u linked\u pub
是一个数组,请尝试

if @associated_linked_pub.include?(linkedpub.LPU_ID)

在这些情况下,在?中使用
总是让我感觉更自然。

可能的副本您能提供文档链接吗?
@associated_linked_pub.collect(&:id).include?(linkedpub.LPU_ID)
if @associated_linked_pub.include?(linkedpub.LPU_ID)
linkedpub.LPU_ID.in?(@associated_linked_pub.collect(&:id))