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

时间:2011-08-09 05:35:43

标签: ruby arrays

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

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

此致

马特

3 个答案:

答案 0 :(得分:0)

使用数组搜索:

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

希望这有帮助!

这是php吗?

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

使用:array.include?(value)

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

答案 1 :(得分:0)

compare字段需要反序列化才能在其上调用include?

答案 2 :(得分:0)

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

  

<强> str.include? other_str =&gt;真或假
  的 str.include? fixnum =&gt;真或假
  如果 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数据库时,将数组数据存储在一个单独的表中。