试图弄清楚如何检查值是否在数组中

问题描述 投票:0回答:3

我正在尝试检查当前登录的用户是否具有他们当前在比较数组中查看的帖子的ID。 Compare是Users数据库中包含Post id的序列化数组的字段。这是我尝试过的事情之一,但它总是转到else语句

<% if User.find(current_user.id).compare.include? @post.id %>
do something
<% else %>
do something else
<% end %>

问候,

马特

ruby arrays
3个回答
0
投票

在你可以调用compare之前,需要对include?字段进行反序列化。


0
投票

使用数组搜索:

$key = array_search('USER', $array);

希望这可以帮助!

这是php吧?

- 阅读标签......这是正确的答案:

使用:array.include?(value)

http://www.ruby-doc.org/core/classes/Array.html#M002226


0
投票

我猜你正在使用Ruby 1.8。 String类还有一个include?方法:

str.include? other_str => true或false str.include? fixnum => true或false 如果str包含给定的字符串或字符,则返回true。

所以你可以做str.includes? 11和1.8.7将让它通过。

在1.9+中,String的include?只能理解一个字符串参数:

str.include? other_str→true或false 如果str包含给定的字符串或字符,则返回true。

所以,当你这样做时:

User.find(current_user.id).compare

您将序列化表单作为字符串获取,然后在该字符串中查找Fixnum。您的@post.id可能超出序列化数据中的字符范围,因此include?失败。您可能希望在compare覆盖中反序列化序列化数组。或者更好的是,当您处理下面的SQL数据库时,将数组数据存储在单独的表中。

© www.soinside.com 2019 - 2024. All rights reserved.