如何在模型返回之前对模型的所有数据进行一些修改? rails中的回调似乎只涉及数据的创建或更新,而不是retreival。
我敢打赌,这可能是一个我看不到的非常明显的解决方案。
以下是一个例子:
我有一张名为quotes
的表格。在Quote
模型提供任何数据之前,我想用Sun Tzu
替换单词Chinese Dude
的所有出现。
答案 0 :(得分:1)
以不同的方式思考这个问题。
您想要更改quote.text,因此它会返回应用替换的文本的数据库值。
这是代码
def text
if self[:text]
self[:text].gsub(/Sun Tzu/, "Chinese Dude")
end
end
因此,您只会覆盖您需要的内容。
答案 1 :(得分:0)
答案 2 :(得分:0)
使用after_find。我不相信它的工作方式与其他回调相同,因此您必须手动定义方法而不是after_find :my_method
。所以这样做
class Post < ActiveRecord::Base
def after_find
# do stuff here
end
end