2011-08-09 9 views
0

現在ログインしているユーザーが現在比較配列に表示している投稿のIDを持っているかどうかを確認しようとしています。比較は、Post IDのシリアル化された配列を含むUsersデータベースのフィールドです。これは私が試したものの一つですが、それは常に値が配列内にあるかどうかを調べる方法を調べようとしています

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

よろしく、

マット

答えて

0

使用アレイ検索elseステートメントに行く:

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

・ホープ、この助けて!

これはPHPの権利ですか? -

タグを読むには...ここで正解です:

使用:compareフィールドは、あなたがそれにinclude?を呼び出すことができます前に、デシリアライズする必要がありarray.include?(value)

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

0

0

私はあなたがRuby 1.8を使用していると推測します。 Stringクラスには、include?メソッドもあります。

str.include? other_str => trueまたはfalse
str.include? fixnum => trueまたはfalse
strに指定された文字列または文字が含まれている場合はtrueを返します。

だから、str.includes? 11とすることができます。 1.9では

、文字列のinclude?は唯一の文字列引数理解:

str.includeを? other_str→trueまたはfalse
strに指定された文字列または文字が含まれている場合はtrueを返します。

だから、あなたはこれを行うとき:

あなたは文字列としてシリアル化されたフォームを取得し、その文字列にFixnumかを探している
User.find(current_user.id).compare 

@post.idはおそらくシリアル化されたデータの文字の範囲外ですので、include?は失敗します。あなたはおそらくcompareオーバーライドでシリアル化された配列をシリアル化解除したいと思うでしょう。または、下のSQLデータベースを扱う際に、配列データを別のテーブルに格納することもできます。

関連する問題