在我的Rails项目中,我将全局设置存储在一个字符串索引的哈希表中,其中每个类(模型)都有自己的"命名空间"用于其自己的设置。例如,News模型可能具有设置'news.stories_per_page'或'news.show_date'。
为了避免到处使用名称操作,我有一个mixin提供通用的类方法来访问这些设置。使用这个mixin,我可以使用如下代码访问'news.show_date':
现在,问题来了。为了生成字符串“news.show_date”,我需要知道将我的模块混入的模型的类名。但是在类方法中,我无法访问该类名。
News.setting :show_date
=> true
现在,问题来了。为了生成字符串“news.show_date”,我需要知道将我的模块混入的模型的类名。但是在类方法中,我无法访问该类名。
self.class
=> Class
这对我来说并不是很有帮助。在我的天真实现中,这导致所有模型都将其设置存储在“class.”命名空间下,这是不可接受的。
很抱歉我无法更清楚地陈述问题。我对Ruby还比较新,还没有完全理解它的对象模型。这个问题可能与在Ruby中似乎需要的混合类方法的修补有关。