2010-06-04 142 views
1

我不明白,没有什么比这更简单:Before_save过滤器不工作

class Visit < ActiveRecord::Base 
    def before_save 
    self.visited_on = "test" 
    end 
end 

然而,如果我这样做:

a = Visit.first 
a.user_id = 5 
a.save 
a.visited_on 
=> nil #WTF? 

我知道过滤器必须返回true,但是这一次是.. 。 可能是什么问题?

回答

0

你确定你的记录实际上被保存了吗?如果user_id已经是5,那么a.save将不执行保存。另外,如果visited_on是日期和/或时间,那么“测试”可能会被转换为零。尝试使用当前时间或类似的东西。

+0

对不起,我已经做过这些测试。 visited_on是一个字符串(我知道这是愚蠢的,但它是我发现能够使用Visit.count(:all,:group =>:visited_on)得到按天分组的结果的唯一方法 是的,在尝试保存之前,我确实将用户(或任何其他属性)更改为随机值。我可以在日志中看到保存已完成,但before_filter未执行,非常奇怪! – Alain 2010-06-04 16:53:00

0

典型的愚蠢dev错误:我有两个类访问我的代码。我不知道它是如何发生的,但删除空白类修复了问题。对不起,浪费你的时间。