RSpec と FactoryGirl を実行している間、任意のパラメーターを自動的に fixnum に変換しますが:id
、実際には文字列として渡されます。私が持っているコードは:id
、複合主キーとして split を呼び出そうとするプロセスを持っていますparams[:id]
。その結果、次のように例外が発生します。
NoMethodError:
undefined method 'split' for 234:Fixnum
このようなものを呼び出そうとすると:
@myinstance = MyClass.find(params[:id].split("-").map{|x| x.to_i})
この問題を回避するために、単純な型チェックを追加しました。
if params[:id].is_a? Fixnum
@myinstance = MyClass.find(params[:id])
else
@myinstance = MyClass.find(params[:id].split("-").map{|x| x.to_i})
end
しかし、これは私が期待するようには機能しません。if
ステートメントは に評価され、false
がsplit
まだ試行されているため、同じエラーが発生します。params[:id]
Rubyが " " ロジックで Fixnum として認識しているにもかかわらず、ステートメントでのelse
評価に失敗する可能性はありますか?true
if