0

Rails アプリケーションで (データベース側で) テキストとして定義されたフィールドがあります。これで、古いデータの一部が文字列として直接書き込まれました。ハッシュの追加を開始したいと思います。

データを取得するときに、ハッシュの場合は別の方法でレンダリングしたいと考えています。

これが私が試したものですが、acts_like? メソッドは常に false を返します:

if suggestion.acts_like? Hash
  suggestion.each {|attr, value| puts(helper.t attr+": "+value.to_s)}
else
  puts suggestion
end

私は間違って何をしていますか? act_like ですか?ここで使用するのに適切なものですか?


答えが見つかったので質問を締め切ろうとしましたが、正しく保存されていないようです。

これが私が最終的に使用したものです:

if suggestion.is_a? Hash
....
else
...
end

なぜacts_likeなのかはまだわかりません。動作しませんが、is_a? 動作します!kind_of の Oldergod の提案は? あまりにも動作します!

4

1 に答える 1

1

あなたは出来る

if suggestion.kind_of?(Hash)
  # ...
end

また

if Hash === suggestion
  # ...
end
于 2012-08-09T00:46:54.197 に答える