我正在尝试从 Sinatra 中的路径获取数据,并使用 Datamapper 使用它来查找特定记录。Datamapper文档 似乎表明了这一点。
get "/test/:test_path" do
test_get = Intake.get( params[:test_path] )
# Do stuff
erb :blah_blah_blah
end
应该找到与符号关联的任何记录:test_path
这不起作用。test_get 为零。
同时,起作用的是
get "/test/:test_path" do
test_all = Intake.all(:test_path => params[:test_path] )
# Do stuff
erb :blah_blah
end
我的两个问题是:
- Datamapper 中的 .get() 调用我做错了什么?
- .all(:name => value) 方法是否比 .get() 慢,或者我使用哪个无关紧要?
这是一个简化的 Sinatra 脚本以演示该行为。
#!/usr/bin/env ruby
require 'rubygems'
require 'sinatra'
require 'dm-core'
require 'dm-timestamps'
DataMapper.setup(:default, {:adapter => 'yaml', :path => 'db'})
class Intake
include DataMapper::Resource
property :id, Serial
property :created_at, DateTime
property :test_path, String
end
get "/test/:test_path" do
test_all = Intake.all(:test_path => params[:test_path] )
puts 'test_all:' test_all.inspect
test_get = Intake.get( params[:test_path] )
puts 'test_get:' test_get.inspect
"Hello World!"
end