2015-02-10 62 views
1

d我正在編寫一個Model函數,該函數正在遍歷一個散列,該散列的鍵名與模型屬性名稱相同。我想將哈希鍵的值與包含在相同名稱的模型屬性中的值進行比較。但是,當我生成屬性名稱時,我不知道如何實際引用實際的模型名稱及其相應的屬性。目前,我做了以下內容:如何生成屬性名稱並在rails模型中獲取它們的值

def grade 
    num_correct = 0 
    answers = self.class.answers 
    answers.each do |question, value| 
    db_question = question 
    num_correct = num_correct + 1 if db_question.to_i == value 
    end 


    if num_correct < 22 
    return "Beginner" 
    elsif num_correct >= 22 and num_correct < 41 
    return "Intermediate" 
    else 
    return "Advanced" 
    end 
end 

我想db_question實際上是模型屬性「db_question」,但我不知道如何從簡單的字符串,這相當於實際的模型屬性的轉變到模型屬性本身

+2

您是否嘗試使用'send'方法。我認爲這會做有需要的。一個鏈接如何工作:http://stackoverflow.com/questions/7895253/rails-100-newb-issue-send-method – Deep 2015-02-10 01:12:54

+0

(顯式返回結束時不需要紅寶石) – froderik 2015-02-10 04:19:24

回答

1

你的情況:

value = model.send 'Beginner'.downcase.to_sym 

一般地 - 做一個字符串打印本身.....:

'yolo'.send 'to_s'.to_sym 

相當於

'yolo'.to_s 

相當於

'yolo' 
相關問題