1
나는 will_paginate를 Sinatra와 함께 사용하려고하며 will_paginate 및 DataMapper에 문제가 있습니다. 그래서 나는 코드가 있습니다Will_paginate 및 DataMapper가 irb에서만 작동
require 'data_mapper'
require 'will_paginate'
require 'will_paginate/data_mapper'
class User
include DataMapper::Resource
property :id, Serial # primary serial key
property :username, String, length: 5..15, unique: true
property :fullname, String, length: 5..25
property :email, String, required: true, unique: true, format: :email_address
property :hashed_password, String
property :created_at, Time, required: true
property :auth_token, String
property :locale, String
has n, :items
end
class Item
include DataMapper::Resource
property :id, Serial
property :question, String, required: true
property :answer, String, required: true
property :ef, Float
property :interval, Float
property :created_at, Time
property :updated_at, Time
property :reviev_at, Time
belongs_to :user
end
DataMapper::setup(:default, "sqlite3://#{File.expand_path(File.dirname(__FILE__))}/database2.db")
DataMapper.finalize
DataMapper.auto_upgrade!
u = User.first
p = u.items.paginate(page: 1)
puts p.total_entries
을 그리고 실행이 문제가 발생합니다
/home/changs/src/PwS/vendor/bundle/ruby/1.9.1/gems/dm-core-1.1.0/lib/dm-core/query.rb:942:in `assert_valid_order': +options[:order]+ should not be empty if +options[:fields] contains a non-operator (ArgumentError)
from /home/changs/src/PwS/vendor/bundle/ruby/1.9.1/gems/dm-core-1.1.0/lib/dm-core/query.rb:773:in `block in assert_valid_options'
from /home/changs/src/PwS/vendor/bundle/ruby/1.9.1/gems/dm-core-1.1.0/lib/dm-core/query.rb:766:in `each'
from /home/changs/src/PwS/vendor/bundle/ruby/1.9.1/gems/dm-core-1.1.0/lib/dm-core/query.rb:766:in `assert_valid_options'
from /home/changs/src/PwS/vendor/bundle/ruby/1.9.1/gems/dm-core-1.1.0/lib/dm-core/query.rb:363:in `update'
from /home/changs/src/PwS/vendor/bundle/ruby/1.9.1/gems/dm-core-1.1.0/lib/dm-core/query.rb:386:in `merge'
from /home/changs/src/PwS/vendor/bundle/ruby/1.9.1/gems/will_paginate-3.0.2/lib/will_paginate/data_mapper.rb:54:in `total_entries'
from test.rb:39:in `<main>'
을하지만 마지막 세 줄을 주석 경우는 IRB뿐만 경작 작동합니다
ruby-1.9.2-p290 :001 > require './test' # file with deleted last 3 lines
=> true
ruby-1.9.2-p290 :002 > u = User.first
=> #<User @id=1 @username="Testt" @fullname="tetestse" @email="[email protected]" @hashed_password=nil @created_at=2011-11-14 00:00:00 +0100 @auth_token=nil @locale=nil>
ruby-1.9.2-p290 :003 > p = u.items.paginate(page: 1)
=> [#<Item @id=1 @question="A" @answer="B" @ef=nil @interval=nil @created_at=2011-11-14 00:00:00 +0100 @updated_at=2011-11-14 00:00:00 +0100 @reviev_at=nil @user_id=1>, #<Item @id=2 @question="C" @answer="D" @ef=nil @interval=nil @created_at=2011-11-14 00:00:00 +0100 @updated_at=2011-11-14 00:00:00 +0100 @reviev_at=nil @user_id=1>]
ruby-1.9.2-p290 :004 > puts p.total_entries
2
=> nil
네가 맞아. 그것은 지금 작동하지만 will_paginate와 함께 사용할 때 DataMapper와 관련된 다른 문제가 있으므로 will_paginate를 사용하지 않기로 결정했습니다. 도와 주셔서 감사합니다! – chg