Я полностью смущен тем, как писать область, отображающую события , которые либо были закрыты, либо истекли. если можно было бы посоветовать мне, я был бы очень благодаренКак написать область для закрытых или истекших объектов - Rails 4
схема
ActiveRecord::Schema.define(version: 20161116132520) do
create_table "events", force: :cascade do |t|
t.string "title"
t.text "description"
t.date "date"
t.string "city"
t.boolean "close"
t.integer "user_id"
end
end
я попытался ниже областей, но не повезло:
Event.rb file
scope :expired_or_closed_events, -> {where(['close = ?', true] || ['date < ?', Date.current])}
scope :expired_events, -> {where(['date < ?', Date.current])}
scope :closed_events, -> {where(['close = ?', true])}
ПРОБЛЕМА: Это ниже проблема у меня есть. Объем
events.expired_or_closed_events.count
илиevents.closed_events.expired_events.count
должен отображать5
. Может один любезно посоветовать мне, как я пишу сферу Thats дисплей все события, которыеclosed but not expired & that are closed and expired
-
2.3.0 :002 > events.count
(0.2ms) SELECT COUNT(*) FROM "events"
=> 8
2.3.0 :003 >
2.3.0 :004 >
2.3.0 :005 > events.closed_events.count
(0.2ms) SELECT COUNT(*) FROM "events" WHERE (close = 't')
=> 1
2.3.0 :006 >
2.3.0 :007 >
2.3.0 :008 > events.expired_events.count
(0.3ms) SELECT COUNT(*) FROM "events" WHERE (date < '2016-11-19')
=> 4
2.3.0 :009 >
2.3.0 :010 >
2.3.0 :011 >
2.3.0 :012 > events.expired_or_closed_events.count
(0.2ms) SELECT COUNT(*) FROM "events" WHERE (close = 't')
=> 1
2.3.0 :013 >
2.3.0 :014 >
2.3.0 :015 >
2.3.0 :016 > events.closed_events.expired_events.count
(0.2ms) SELECT COUNT(*) FROM "events" WHERE (close = 't') AND (date < '2016-11-19')
=> 0
2.3.0 :017 >