2011-07-13 474 views
0
def check_beta_code 
    beta_code_array = ['AAAAAAAAAA', 'BBBBBBBBBB', 'CCCCCCCCCC', 'DDDDDDDDDD', 'EEEEEEEEEE'] 

    if false == beta_code_array.include?(:beta_code) 
     errors.add(:beta_code, "Invalid Beta Code") 
    end 
end 

我創建了一個用戶,user = User.new{:beta_code=>'AAAAAAAAAA'}然後user.save #=> false,然後我做user.errors #=>{:beta_code=>["Invalid Beta Code"]}爲什麼這段代碼不能產生想要的結果?

爲什麼給錯誤即使:beta_code等於值中的一個? 幫助!

+2

爲什麼你需要該語句的「if false ==」部分?編寫該行的簡單方法是「除非beta_code_array.include?(beta_code)」。 – Preacher

+1

+1牧師,我會在我的答案中改變這一點。 –

回答

6

看看你的條件:

beta_code_array.include?(:beta_code) 

你檢查是否beta_code_array包括符號:beta_code。我假設你打算傳遞一個字符串參數?我對Rails不太熟悉 - 如果這不是用戶模型的正確形式,請糾正我。

def check_beta_code beta_code 
    beta_code_array = ['AAAAAAAAAA', 'BBBBBBBBBB', 'CCCCCCCCCC', 'DDDDDDDDDD', 'EEEEEEEEEE'] 

    unless beta_code_array.include?(beta_code) 
     errors.add(:beta_code, "Invalid Beta Code") 
    end 
end 
+0

非常感謝,我很新的軌道和編碼一般 – Vasseurth

+2

很高興幫助。祝你好運! –

相關問題