2014-12-30 1 views
0

사용자가 사용 코드를 통해 구입 한 후 계정을 사용할 수있게하려고합니다.미정의 방법 ActiveRecord :: Relation에 대해 '교환 됨'

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로 변경하고 싶습니다.

나는 당신이 Account.where(redemption_code: @code)를 호출 할 때

Undefined Method 'redeemed' for #<ActiveRecord::Relation[]> 

가 확실하지 왜

답변

1

하지만 그것은, 즉 여러 개의 계정을 반환 할 수 있기 때문에 전에보고 아직 오류를 얻었다. Account.where(redemption_code: @code).first 또는 Account.find_by_redemption_code(@code)과 같은 작업을 수행해야합니다.

관련 문제