2017-05-12 61 views
-2
@results.each do |result| 
    pp result.driver.name     # work 
    pp result.read_attribute('driver_name') # nil 
    pp result.read_attribute(:driver_name) # nil 
end 

有沒有什麼方法可以像read_attribute那樣顯示?Rails如何使用`read_attribute`獲取關聯模型的屬性

+0

爲什麼你認爲你可以通過'driver_name'訪問驅動程序名?是否可以用下劃線連接對象訪問? –

+0

read_attribute返回屬性的值,上面的代碼有什麼問題?它返回nil,因爲'result'沒有'driver_name'屬性或者它沒有? –

+0

@SimonFranzen事實上,我只想寫一個例子來「說」我想要的東西。我的英語太糟糕了......所以如何動態地用一個字符串來讀取對象的值。 – Duanckham

回答

2

如果你想這樣做,無論如何,你可以使用delegateresults模型,如:

delegate :name, to: :driver, prefix: true 

現在嘗試調用它,它應該返回相關的驅動程序的名稱。

result.driver_name 
+1

@Duanckham不要再爲你的英文道歉一次又一次:)通過實踐學習! –

+0

@Duanckham不一定是唯一的方式,但這就是我現在可以想到的..如果你有任何錯誤,請告訴我。 –

+0

如果它對你有效,請接受答案。 –

相關問題