2017-03-21 1 views
1

On Activeadmin私はevents_dateテーブルを持っています。ダッシュボードでは、今後のイベントの日付のみを表示しようとしています。私はこれを行う方法を考え出すのに困っている。これは私が今までに持っているコードです:activeadminダッシュボードで、将来の予定のみを表示しようとしています

 column do 
     panel "Upcoming Events" do 
     table_for EventDate.order("event_date asc").limit(20), sortable: true do 
      column :event_date 

      column "Event Name" do |event_date| 
        event_date.event_location.event.name 
        end 
      column "Agency Id" do |event_date| 
        event_date.event_location.event.agency_id 
        end    
      end 
     end 
     end 
    end 

あなたが推測するように、これは私のすべてのイベントの日付を与えます。今日から将来の日付を表示するにはどうすればいいですか?

+0

コードは正常です。私は前に列の中にネストされたパネルを見たことは確かではありませんが、それは問題ではないと思います。レンダリングするレコード数は20を超えますか? –

+0

はい、コードが動作し、私にすべてのイベントを与えます。しかし、将来の出来事だけを見せてほしい。イベントの日付が昨日か過去であった場合、私はそれを表示したくありません。 –

答えて

1

arel_tableを使用して、Time.zone.nowクエリよりも大きいかeqを取得できます。

class EventDate > ActiveRecord::Base 
    scope :future, -> { where(arel_table[:event_date].gteq(Time.zone.now)) } 
    # another way of doing it 
    scope :future, -> { where("event_date >= ?", Time.zone.now) } 
end 

# active admin 

table_for EventDate.future.limit(20), sortable: true do 
    column :event_date 

    column "Event Name" do |event_date| 
    event_date.event_location.event.name 
    end 

    column "Agency Id" do |event_date| 
    event_date.event_location.event.agency_id 
    end    
end 


# Should give this query 
EventDate Load (0.7ms) SELECT "event_dates".* FROM "event_dates" WHERE "event_dates"."event_date" >= '2017-03-22 13:39:38.427240' 
+0

そのコードを実装したいとは思っていません。 ActiveAdmin.register_page "Dashboard"の下に置いてください。 しかし、私はそれを動作させるように見えることはできません。 –

+0

スコープ:未来はEventDateモデルにあるはずです。 –

関連する問題