Mongomapper (또는 더 정확하게, Plucky, Mongomapper Queries를 구축하는 도서관) id
에게 _id
ActiveRecord로 패리티를 자동으로 사용하므로 두 개의 다른 필드를 사용할 수 없습니다. _id
그리고 id
. 로그에서 생성 된 쿼리를 보면 알 수 있습니다.
이 경우 다른 필드 이름을 사용하려고합니다.
문제
간단한 경매 사이트에 Sinatra 앱에서 Mongomapper를 사용하려고하지만 간단한 쿼리를 실행하고 결과를 얻는 데 어려움이 있습니다.
before '/auction/:id' do
connection = Mongo::MongoClient.new
db = connection.db('auction')
collection = db['auctions']
@query = Plucky::Query.new(collection)
end
get '/auction/:id' do
@auction = @query.where({:id => params["id"].to_i})
"#{@auction.inspect}"
end
그러나 나는 출력을 얻지 못한다 @auction.inspect
브라우저에서. 그러나 쿼리를 사용할 때 @auction = @query.all
데이터베이스 내에서 모든 레코드를 얻습니다.
매개 변수 (URL LocalHost/Auction/3을 사용할 때) :
{"splat"=>[], "captures"=>["3"], "id"=>"3"}
query.all
산출:
[{"_id"=>BSON::ObjectId('529cbbee21f7f10dd4000005'), "id"=>2, "name"=>"jump", "price"=>1.42}, {"_id"=>BSON::ObjectId('529cbbf821f7f10dd400000e'), "id"=>3, "name"=>"here", "price"=>93.34}]
해결책
Mongomapper (또는 더 정확하게, Plucky, Mongomapper Queries를 구축하는 도서관) id
에게 _id
ActiveRecord로 패리티를 자동으로 사용하므로 두 개의 다른 필드를 사용할 수 없습니다. _id
그리고 id
. 로그에서 생성 된 쿼리를 보면 알 수 있습니다.
이 경우 다른 필드 이름을 사용하려고합니다.
다른 팁
.where
협회를 구축하지만 다음과 같은 방법을 호출해야합니다. all
또는 first
쿼리를 수행하고 결과를 얻으려면 :
@auction = @query.where({:id => params["id"].to_i}).first