Chciałem sobie ułatwić prace i na potrzeby prac deweloperskich zrezygnowałem z mysql i pracuję na sqlite. Wszystko działało ładnie do momentu kiedy pojawiły się daty.
[code]class CreateArticles < ActiveRecord::Migration
def change
create_table :articles do |t|
t.string :title
t.text :content
t.belongs_to :user
t.boolean :accepted, :default=>false
t.datetime :visible_from
t.datetime :visible_to
t.timestamps
end
add_index :articles, :user_id
end
end
class Article < ActiveRecord::Base
belongs_to :author, :class_name=>‘User’, :foreign_key=>:user_id
default_scope order(‘created_at DESC’)
scope :accepted, where(:accepted=>true)
scope :unaccepted, where(:accepted=>false)
def self.visible
where(‘visible_from <= :time and visible_to >= :time’, :time=>Time.now)
end
end[/code]
Wygląda to poprawnie ale niestety nie działa. Przykład z konsoli:
Loading development environment (Rails 3.1.0.rc4)
irb(main):001:0> Article.first
Article Load (0.2ms) SELECT "articles".* FROM "articles" ORDER BY created_at DESC LIMIT 1
=> #<Article id: 1, title: "First article", content: "-= Mój pierwszy dokument =-\nTo jest mój pierwszy ...", user_id: 1,
accepted: false, visible_from: "2011-07-03 10:33:52", visible_to: "2012-07-03 10:33:52", created_at: "2011-07-03 10:33:52",
updated_at: "2011-07-03 10:33:52">
irb(main):002:0> Article.visible.all
Article Load (0.2ms) SELECT "articles".* FROM "articles" WHERE (visible_from <= '2011-07-03 13:13:20.607603' and
visible_to >= '2011-07-03 13:13:20.607603') ORDER BY created_at DESC
=> []
Zwraca pusty zestaw a powinien zwrócić co najmniej ten pierwszy rekord (w rzeczywistości więcej).
Co zrobić z tymi datami? Czyżby praca z SQLite nie pozwalała na operacje na datach?