foo.persisted? == true
文書は、いつ、どのように請求できfoo.class.count == 0
ますか?
さらに重要なことは、ドキュメントを本当に永続化するにはどうすればよいでしょうか?
更新:Mongo::Foo.create()
コントローラーから呼び出すと、カウントがインクリメントされます。それが予想されます。別のモジュール/クラス内からcreate
、またはnew
および を呼び出しても、カウントは増加しません。save
更新:変更を試みましたnew
/save
への呼び出しcreate
更新:私も試しました@foo_class.with(collection: "mongo_foos").create
[42] pry(#<FoosController>)> foo.class
=> Mongo::Foo
[43] pry(#<FoosController>)> foo.persisted?
=> true
[44] pry(#<FoosController>)> Mongo::Foo.count
=> 0
[47] pry(#<FoosController>)> foo.id
=> "5081a1a786ddc8e035000021"
[48] pry(#<FoosController>)> foo
=> #<Mongo::Foo _id: 5081a1a786ddc8e035000021, _type: nil, foo_daddy_id: nil, old_foo_daddy_id: 219, member_id: "F008AR", unix_time: nil, date_time: 2012-10-19 13:50:54 UTC, submitted: nil, json: nil>
ドキュメント クラスの定義方法は次のとおりです。
module Mongo
class Foo
include Mongoid::Document
field :foo_daddy_id
field :old_foo_daddy_id, type: Integer
field :member_id, type: String
field :unix_time, type: Integer
field :date_time, type: DateTime
field :submitted, type: Integer
field :json, type: Hash
belongs_to :foo_daddy, class_name: "Mongo::FooDaddy"
embeds_many :foo_dumplings, class_name: "Mongo::FooDumpling"
end
end
ドキュメントは で作成されていfoo.new(params); foo.save
ます:
module FooThingy
module Foo
class Create < ::FooThingy::Base
def initialize(options)
# Sets instance variables used below
end
def execute!
@foo = @foo_class.new({
date_time: DateTime.strptime(@params["submitted_timestamp"], "%m-%d-%Y %H:%M:%S"),
member_id: (@params[:member_id].present? ? @params[:member_id] : nil),
old_foo_daddy_id: @params[:old_foo_daddy_id]
})
embed_foo_dumplings
if @foo.save
return FooThingy::Result.new(success: true, data: { foo: @foo })
else
return FooThingy::Result.new(success: false, data: { foo: @foo })
end
end
private
def embed_foo_dumplings
# Embeds foo_dumplings
end
end
end
end
ドキュメントを作成するためにそのモジュールを呼び出す場所は次のとおりです。
class FoosController < ApplicationController
def create
foo_creator = FooThingy::Foo::Create.new(params: params, foo_class: Mongo::Foo)
foo = foo_creator.execute!
foo = foo.data[:foo]
binding.pry
end
end