我試圖在我的模型中的一個屬性中動態創建一個方法鏈。 現在我有這樣的功能:alias_attribute和創建和具有原始屬性名稱的方法導致循環
def create_filtered_attribute(attribute_name)
alias_attribute "#{attribute_name}_without_filter", attribute_name
define_method "#{attribute_name}" do
filter_words(self.send("#{attribute_name}_without_filter"))
end
end
所以我收到一個字符串屬性名,別名,它爲「_without_filter」(alias_method或alias_method_chain失敗在這裏,因爲屬性心不是有創建類時), 我創建了一個新的方法,使用屬性名稱來篩選其內容。它調用我的新方法(我認爲是因爲alias_attribute的一些方式),並且程序進入了一個堆棧循環。但是不知何故,當我撥打「#{attribute_name} _without_filter」時,它會調用我的新方法。
我試着去重新命名該屬性,這樣我就可以使用其名稱的方法...
可有人請賜教這一點。
有大約alias_method與alias_attribute博客文章及其使用案例:http://www.chrisrolle.com/blog/aliasing-the-rails-way – 2016-02-02 06:21:19