私は奇妙なエラーが発生しています。私のアプリは、私のローカルホスト上で完全に正常動作しますが、私のHerokuのサーバー上では、このエラーを与えている:ここでTypeError (String can't be coerced into Fixnum):
TypeError(文字列をFixnumに強制することはできません)?
は私のコードです:
@rep = rep_score(@u)
エラーをスローラインのログによります。私はそれをコメントして、Herokuへの変更をプッシュし、アプリは正常に実行されます。ここ
はrep_score
方法であって
def rep_score(user)
rep = 0
user.badges.each do |b|
rep = rep + b.rep_bonus
end
return rep
end
もrep_bonus
データベース内の整数です。
これもローカルホスト上で完全に正常に動作します。どう考えているか教えてください。
rep_score
方法からreturn
を除去した後、それが正常に働いています。私はまだRubyを初めて使っていますが、return
を置くと何か問題がありますか?それは他の言語からの習慣です。
?そして、なぜlocalhost上で動作するのかは分かりません。 – Deekor
普遍的な質問はなぜですか?私は正確になぜ答えはありませんが、それは問題を解決します。私は自分のデータベースから引き出された整数が、常に正しいタイプとして設定されているわけではないことを発見しました。問題が私のDB(私はMySQLを使用している)であろうとなかろうと、単純な型変換が問題全体を修正するので気にしません。 ローカルホストとプロダクションは全く異なる環境です。数百万の可能性があります。 Rubyのバージョンは異なりますが、宝石のポートは同じではなく、プラットフォームの違い、データベースのバージョンが異なります...リストが頻繁に変わり、40個の文字が残っています。 – CrazyVipa
私の編集を読んだら、この質問に答える前に 'return'を取り除くことで修正したのを見ることができます。リターンがエラーの原因になった理由はありますか? – Deekor