2011-08-09 67 views
0

我試圖檢查當前登錄的用戶是否有他們當前正在查看他們的比較數組中的帖子的ID。 Compare是包含Post ID的序列化數組的Users數據庫中的字段。這是我試過的事情之一,但它總是轉到else語句試圖找出如何檢查值是否在數組

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

問候,

馬特

回答

0

compare字段需要反序列化可以在其上調用include?前。

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,字符串的include?既懂字符串參數:

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

所以,當你這樣做:

User.find(current_user.id).compare 

你得到的序列化格式爲一個字符串,然後在該字符串尋找一個Fixnum。您的@post.id可能超出了序列化數據中字符的範圍,因此include?失敗。您可能想要在compare重寫中反序列化您的序列化數組。或者更好的辦法是,在處理下面的SQL數據庫時,將數組數據存儲在單獨的表中。