Ruby on rails 如何检查是否在值数组中找到值
我想执行一个if条件,其中,如果在值数组(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
@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))