我有一個類Deal < ActiveResource具有從資源綁定的屬性選項。 我確認選項在rails控制檯中返回一個數組。 但是,定義?(選項)返回nil。 雖然我注意到已定義?(:options)返回true,但我仍不明白爲什麼在前面的示例中返回nil。Ruby定義?檢查定義的屬性時返回nil?
回答
據我所知,ActiveResource使用method_missing
方法做它的小魔術。所以實際上你不應該期待定義方法options
。您可以查看implementation以瞭解其工作原理。
我懷疑defined?(options)
正在調用選項方法並將結果傳遞給defined?
。 defined?(:options)
是你可能想要的。提供代碼片段可能有助於更準確地回答。
澄清,定義?(:選項)總是返回true,不管選項是什麼。所以問題變成了如何定義?(選項)返回nil self.options確實返回一個非空數組。 – user1991452
正如Ivaylo所建議的,self.options可能是使用method_missing實現的,而不是實際的方法。是否respond_to?(:options)返回true?如果不是,那麼它使用method_missing實現。如果它返回true,它可能仍然意味着respond_to?已被重寫爲與method_missing一致 – aagdbl
- 1. 自定義查詢參數返回nil
- 2. 。在查詢零屬性時返回nil
- 3. 爲什麼定義的?(ModelName)返回nil?
- 4. 自定義.NET屬性檢查方法返回類型
- 5. 返回值的自定義屬性
- 6. 定義屬性回報「未定義」
- 7. 返回屬性(XHR)上未定義
- 8. 自定義屬性返回null
- 9. 屬性返回未定義表
- 10. JavaScript檢查屬性是否定義
- 11. 自定義屬性和類型檢查
- 12. 「定義mt」SubL命令返回「NIL」,當定義微觀存在時
- 13. 當訪問ruby/rails實例變量的屬性時返回nil
- 14. 查詢返回對象(生成器),未定義的屬性
- 15. 自定義屬性/使用Ruby on Rails的用戶定義屬性
- 16. 使用QWebChannel時未定義的屬性和返回類型
- 17. 返回值時未定義
- 18. programattically定義的類定義屬性
- 19. 動態定義屬性的DTD定義
- 20. 檢查類屬性定義或在給定的類派生
- 21. 檢查自定義屬性是否有特定的值
- 22. 蟒蛇:檢查變量定義,並返回其值或返回
- 23. nil值返回錯誤未定義的方法`car_number'爲零:NilClass即使我用.nil檢查它們嗎?
- 24. 在設計/構建時檢查自定義屬性參數
- 25. Ruby - 檢查控制器是否定義
- 26. Django草垛自定義表單自定義屬性返回沒有結果
- 27. 自定義類型的ChildNode在Swift Playground上返回Nil
- 28. CSS屬性定義
- 29. 「屬性」未定義?
- 30. 自定義屬性
你能展示一個更完整的代碼示例嗎? – jtbandes
要明確的是,'defined?(:options)'將總是返回一個真值,因爲':options'是一個表達式,產生一個Symbol類的實例,因此的確定義。這與你的班級沒有任何關係。 – Brandan
布蘭登是正確的。無論符號是什麼,定義?(:任何)總是返回true。 – user1991452