このリンクでは、Railsは複数の属性でfind_or_createしますか?アクティブレコードで複数の属性を使用できます。
mongoidで属性以上のものを使用するにはどうすればよいですか?
ありがとうございました
このリンクでは、Railsは複数の属性でfind_or_createしますか?アクティブレコードで複数の属性を使用できます。
mongoidで属性以上のものを使用するにはどうすればよいですか?
ありがとうございました
lib / mongoid / finders.rbのソースを見ると:
# Find the first +Document+ given the conditions, or creates a
# with the conditions that were supplied.
...
# @param [ Hash ] attrs The attributes to check.
#
# @return [ Document ] A matching or newly created document.
def find_or_create_by(attrs = {}, &block)
find_or(:create, attrs, &block)
end
{}
find_or_create_byが最初の引数としてaを受け入れることがわかります。一度にいくつかの条件を渡すことができます
something.find_or_create_by(name: 'john', age: 20)
そしてそれは動作するはずです。
クエリに関するmongoidドキュメントから:
Model.find_or_create_by
提供された属性でドキュメントを検索し、見つからない場合は、新しく永続化されたドキュメントを作成して返します。
クリストファー、
私は最近同様の問題に遭遇し、mongoid gitリポジトリのソースを読んだ後、最終的にそれを理解しました:
mongoid 3.1.0の安定したブランチでは、これは機能します
@new_object = NewObject.find_or_create_by(indexed_attribute: my_unique_value,
:attributeA => value,
:attributeB => value)