0

Railsの単純なクエリ原因で気が狂いそうです。なぜそれが10行前のように機能し、その後は機能しないのか理解できません。何が問題を引き起こしているのか理解できませんでした

@userID = Token.where(:tokenCode => @tokenReceived)
  #@init.tokenCode=@tokenReceived+"1" #randomize algorithm required!
  @init.tokenCode=@codeGenerated=generate_activation_code()
  if @userID.nil?
    @newToken=Token.new
    @newToken.tokenCode=@codeGenerated
  else
    @tokenToAdd = "12"
    @newToken=Token.where(:userID => "1")
    #if @newToken.nil?
      @newToken.tokenCode="12"
    #end
  end
  #@newToken.save  
  @init.save

'http:// localhost:3000 / inits.json'へのJSONリクエストを成功させると、大量のエラーを含むページが表示されますが、その中の主なエラーは次のとおりです。

<h1>
  NoMethodError
    in InitsController#create
</h1>
<pre>undefined method `tokenCode=&#x27; for #&lt;ActiveRecord::Relation:0x007fc43cb40b88&gt;</pre>

理由は何でしょうか?where句をすべて間違って書いていますか?

編集: if句をアクティブにすると機能します。@newTokenオブジェクトがnullであると単純に信じていますが、その理由を検出することはほとんど不可能です。TokenテーブルにuserID1のデータがあります。

4

1 に答える 1

2

あなたがするとき:

 @newToken=Token.where(:userID => "1")

を取得しActiveRecord::Relationますが、オブジェクトを期待します。したがって、単に次のように置き換えます。

 @newToken=Token.where(:userID => "1").first
于 2012-09-11T08:34:36.540 に答える