2016-11-13 34 views
0

型号
材料(它具有属性arrive_date:日期)的Rails如何从其他控制器属性

控制器
materials_controller,
urgent_controller

在urgent_controller我想搞清楚所有应在5天内收到的材料通过这样做

class UrgentController < ApplicationController 
    def index 
    @materials = Material.where((Time.zone.now.to_date - arrive_date).to_i <= 5) 
    end 
end 

但urgent_controller不知道这个属性,并显示错误

未定义的局部变量或方法`arrive_date”的

我该如何解决这个问题?提前致谢。

+0

你可以包含代码来显示你的控制器吗?控制器不需要彼此了解。 'urgent_controller'应该有自己的'arrive_date',与'materials_controller'分开。 –

+0

@EricWalker嗨,请看我更新的代码 –

+0

。你可能想要像这里做的一样:http://stackoverflow.com/questions/10301400/datetime-arithmetic-in-an-activerecord-query-postgresql。 MySQL会有类似的答案。重要的一点是,'arri_date'似乎是数据库中的一列,所以您不能将其引用为Ruby方法或变量。 –

回答

1

在这种情况下,您应该在您的Material模型中创建一个scope

scope :last_5_days, -> { where('arrive_date >= ?', 5.days.ago.to_date) } 

然后把它在你的控制器

def index 
    @materials = Material.last_5_days 
end 

希望这有助于。

相关问题