未定义的方法'兑换'为ActiveRecord :: Relation

时间:2014-12-30 02:34:19

标签: ruby-on-rails ruby activerecord nomethoderror

我希望用户在通过兑换码购买帐户后能够兑换帐户。

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[]>

不确定为什么

1 个答案:

答案 0 :(得分:1)

这是因为当您拨打Account.where(redemption_code: @code)时,可能会返回多个帐户。您需要执行Account.where(redemption_code: @code).firstAccount.find_by_redemption_code(@code)

之类的操作