weixin_39782500 2020-11-22 01:58
浏览 0

Chaining class finder methods generating incorrect query

 ruby
class NewModel
  include DataMapper::Resource

  property :id ,Serial
  property :use_starts_at, DateTime
  property :use_ends_at, DateTime

  def self.usable_after(time)
    all(:use_starts_at => nil) | all(:use_starts_at.lt => time)
  end

  def self.usable_before(time)
    all(:use_ends_at => nil) | all(:use_ends_at.gt => time)
  end
end

NewModel.auto_upgrade!
NewModel.usable_after(Time.now).usable_before(Time.now)

# Expected SQL: 
# SELECT `id`, `use_starts_at`, `use_ends_at` 
# FROM `new_models` 
# WHERE 
# (`use_ends_at` IS NULL OR `use_ends_at` > '2010-07-06 15:42:18')
# AND
# (`use_starts_at` IS NULL OR `use_starts_at` < '2010-06-05 15:42:18')
#
# Generated SQL:
# SELECT `id`, `use_starts_at`, `use_ends_at` 
# FROM `new_models` 
# WHERE (`use_starts_at` IS NULL OR `use_starts_at` < '2010-07-06 15:42:18')

Created by bcrouse - 2010-07-06 23:24:23 UTC

Original Lighthouse ticket: http://datamapper.lighthouseapp.com/projects/20609/tickets/1354

该提问来源于开源项目:datamapper/dm-core

  • 写回答

5条回答 默认 最新

  • weixin_39782500 2020-11-22 01:58
    关注

    I can confirm this is a bug. See the attached standalone reproduction.

    by Jonathan Stott (namelessjon)

    评论

报告相同问题?