我的所有模型都有字段created_at
和updated_at
(默认情况下),它们未经过任何修改或更改。如果我要进入rails控制台并输入类似的内容:
user = User.first
user.created_at > 5.years.ago
它应该返回true
。但是,如果我尝试在控制器中执行完全相同的操作,则会收到错误消息,指出无法在nil对象上调用>
。为了进一步说明这一点,在任何视图中,如果我使用先前定义的变量@user
并输入:
<%= @user.name %>
它打印名称没有问题。但是,如果我输入:
<%= @user.created_at %>
我什么都没得到(意思是零)。这是每个模型和每个控制器视图的情况 - 我已经彻底测试了它并且无法使其工作,我已经广泛搜索 - 任何帮助将不胜感激。谢谢!
编辑:控制器代码:
def active
@user = current_user
@items = @user.items.where(active: true).order('created_at DESC')
@alerts = false
if @user.items.where.not(deal_price: nil).where(active: true) != []
@alerts = true
end
cookies[:item_temp_url] = ""
if @user.created_at > 5.seconds.ago
@display_welcome = true
end
end
错误:
undefined method `>' for nil:NilClass
答案 0 :(得分:0)
证明数据库已损坏的内容(值没有转移到Rails前端。我重新启动所有Ruby进程并删除并重新创建数据库,错误消失了。