我希望用户在通过兑换码购买帐户后能够兑换帐户。
class Code < ActiveRecord::Base
@redemption_codes = Account.where(:redeemed == false).map(&:redemption_code)
validates :code, inclusion: { in: @redemption_codes }
end
这是我AccountsController
def create
@code = Code.new(code_params)
@account = Account.where(redemption_code: @code)
if @code.save
@account.redeemed == true
flash[:notice] = "Account Redeemed"
redirect_to root_path
else
flash[:danger] = "This does not match any accounts"
render 'new'
end
end
保存代码后,用户输入兑换码时,我希望该项的:redeemed
值从false
更改为true
。
我收到了错误,我还没有看到
Undefined Method 'redeemed' for #<ActiveRecord::Relation[]>
不确定为什么
答案 0 :(得分:1)
这是因为当您拨打Account.where(redemption_code: @code)
时,可能会返回多个帐户。您需要执行Account.where(redemption_code: @code).first
或Account.find_by_redemption_code(@code)
。