Rails 中的“存在?”方法中的属性引用不一致
Inconsistent attribute reference in `exists?` method in Rails
这是我的User
模型:
class User
def upcoming_events_in(minutes, client_id)
events.where(client_id: client_id).exists?(start: (Time.zone.now - duration)..(Time.zone.now + minutes))
end
end
在方法 upcoming_events_in
中,它正确地在 events
记录上查找 start
属性,但它试图在 User
上查找 duration
实例。有没有办法将它绑定到 events
实例?
我不知道 Rails
但它可以很容易地用普通的老东西 SQL:
def upcoming_events_in(minutes, client_id)
events.
where(client_id: client_id).
where('DATEDIFF(events.start, DATESUB(NOW(), INTERVAL events.duration MINUTES)) > 0').
where('DATEDIFF(events.start, DATEADD(NOW(), INTERVAL events.minutes MINUTES)) < 0').
exists?
end
PostgreSQL 版本:
def upcoming_events_in(minutes, client_id)
start = "(TIMESTAMP events.start, TIMESTAMP events.start + INTERVAL '1 MINUTE')"
interval = "(NOW() - INTERVAL 'events.duration MINUTES', NOW() + INTERVAL 'events.minutes MINUTES')"
events.
where(client_id: client_id).
where("#{start} OVERLAPS #{interval}").
exists?
end
或者类似的,我没有PG可以查看
这是我的User
模型:
class User
def upcoming_events_in(minutes, client_id)
events.where(client_id: client_id).exists?(start: (Time.zone.now - duration)..(Time.zone.now + minutes))
end
end
在方法 upcoming_events_in
中,它正确地在 events
记录上查找 start
属性,但它试图在 User
上查找 duration
实例。有没有办法将它绑定到 events
实例?
我不知道 Rails
但它可以很容易地用普通的老东西 SQL:
def upcoming_events_in(minutes, client_id)
events.
where(client_id: client_id).
where('DATEDIFF(events.start, DATESUB(NOW(), INTERVAL events.duration MINUTES)) > 0').
where('DATEDIFF(events.start, DATEADD(NOW(), INTERVAL events.minutes MINUTES)) < 0').
exists?
end
PostgreSQL 版本:
def upcoming_events_in(minutes, client_id)
start = "(TIMESTAMP events.start, TIMESTAMP events.start + INTERVAL '1 MINUTE')"
interval = "(NOW() - INTERVAL 'events.duration MINUTES', NOW() + INTERVAL 'events.minutes MINUTES')"
events.
where(client_id: client_id).
where("#{start} OVERLAPS #{interval}").
exists?
end
或者类似的,我没有PG可以查看