由于简单的Rails where 查询,我即将失去理智。我简直无法理解为什么它像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=' for #<ActiveRecord::Relation:0x007fc43cb40b88></pre>
可能是什么原因?我写的where子句都错了吗?
编辑:当我激活if子句时,它可以工作。我只是相信@newToken对象是null,但是我几乎不可能检测到原因。我的令牌表中有一个数据 userID 1。
答案 0 :(得分:2)
当你这样做时:
@newToken=Token.where(:userID => "1")
你得到一个ActiveRecord::Relation
,但你期望一个对象。所以只需将其替换为:
@newToken=Token.where(:userID => "1").first