In diesem Link Rails find_or_create by more than one attribute? kann mehr als ein Attribut mit aktiven Datensatz verwenden.Schienen 3 find_or_create von mehr als einem Attribut mongoid
Wie kann ich mehr als Attribut in Mongoid verwenden?
Danke
In diesem Link Rails find_or_create by more than one attribute? kann mehr als ein Attribut mit aktiven Datensatz verwenden.Schienen 3 find_or_create von mehr als einem Attribut mongoid
Wie kann ich mehr als Attribut in Mongoid verwenden?
Danke
Wenn Sie an der Quelle suchen in 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
Sie, dass find_or_create_by sehen eine {}
als erstes Argument akzeptiert. Sie können einfach mehrere Bedingungen auf einmal
something.find_or_create_by(name: 'john', age: 20)
übergeben und es sollte funktionieren.
Von den mongoid docs auf querying:
Model.find_or_create_by
durch die dafür vorgesehenen Attribute ein Dokument finden, und wenn nicht und zurück blieb eine neu gefundene erstellen.
Christ,
ich in ein ähnliches Problem lief erst vor kurzem und es schließlich herausgefunden, nachdem die Quelle im mongoid Git Repository zu lesen:
In mongoid 3.1.0 Stable-Zweig, das funktioniert
@new_object = NewObject.find_or_create_by(indexed_attribute: my_unique_value,
:attributeA => value,
:attributeB => value)
Vielen Dank! – hyperrjas
Wie finde ich nur nach dem ersten Attribut, und dann - nur für den Fall, dass nichts gefunden wird - mit den anderen Attributen erstellen? – ChristofferJoergensen
@ChristofferJoergensen, Client.create_with (locked: false) .find_or_create_by (Vorname: 'Andy'), werfen Sie einen Blick auf die Dokumentation: http://guides.rubyonrails.org/active_record_querying.html – mkralla11