我知道模型不應該知道會話數據,但我需要訪問模型中定義的method_missing中的一小部分狀態信息。通過method_missing的抓方法由形式助手調用,即:訪問模型中method_missing會話的最佳方法
client_medias/new.haml:
f.text_field :new_display_name
client_media.rb:
has_many :custom_properties, :as => :extensible
這裏new_display_name'是通過一個多態關聯定義的自定義屬性鍵。我需要知道上下文(在我的情況下,由控制器中可訪問的current_app方法提供)來獲取我映射到method_missing中的動態方法定義的不同定製屬性鍵的集合。
任何想法?我查看了Thread.current,並且現在傾向於使用它。
有很多在這個網站上討論這個問題的線程,多數會罵你甚至考慮它。有一種方法可以詳細解釋如何爲模型提供任何可用的東西,但需要警告,語言很粗糙,你覺得它是一個真正的工具。但它可以做到,這只是不好的做法。搜索'會話模型軌' – RadBrad 2012-04-26 23:13:51
我已經在這裏和更廣泛的interwebs上做了我的研究。我意識到這是一個壞主意,但唯一的方法(我可以想到)直接將app_id從控制器傳遞給模型中的method_missing將是monkeypatch text_field助手,這本身可能是一個壞主意。如果有人能想出一個更好的主意,我會很樂意使用它。或者告訴我哪一個是較小的邪惡(monkeypatching助手或使用Thread.current)? – egres 2012-04-26 23:21:47