2016-11-13 35 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 

希望這有助於。

相關問題