In meiner App, wenn Benutzer registrieren, können sie einige Dateien hochladen. Ich muss den Upload auf maximal 5 Dateien beschränken. Also ich habe zwei Modelle mit folgendem CodeActiveRecord :: NestedAttributes :: TooManyRecords Fehler
class User < ActiveRecord::Base
has_many :fileuploads, :dependent => :destroy
accepts_nested_attributes_for :fileuploads, limit: 5, :allow_destroy => true
validate do |user|
if user.fileuploads && user.fileuploads.count > 5
errors[:base] << "You can add maximum 5 files."
end
end
end
und
class Fileupload < ActiveRecord::Base
belongs_to :user
end
und in meinem erstellen und zu aktualisieren Aktion Ich habe
respond_to do |format|
begin
if @user.save
format.html { redirect_to @user, notice: I18n.t('views.flash_messages.user_was_successfully_created') }
else
format.html { render action: "new" }
end
rescue ActiveRecord::NestedAttributes::TooManyRecords
flash[:error] = 'You can add maximum 5 files. '
end
end
Wie Sie aus dem obigen Code das sehen ich verwende limit: 5
und auch den validate
Rückruf. Aber beides funktioniert perfekt, wenn ich den Benutzer aktualisiere. Wenn ein Benutzer erstellt wird, wird diese Fehlermeldung jedoch nicht gespeichert. Ich erhalte diese Störung,
ActiveRecord::NestedAttributes::TooManyRecords in UsersController#create
Maximum 5 records are allowed. Got 7 records instead.
Warum also die Grenze und arbeitet während der Benutzer Update überprüfen, aber nicht während der Benutzererstellung? Und wie funktioniert es auch für die Erstellung von Aktionen?
Haben Sie Ihre HTML-Codes mit der Navigator-Konsole überprüft, wenn es in Ihren Ansichten 7 Datensätze in Form gibt? –
ja! Auch wenn ich 5 Dateien auswähle, dann speichere ich den Benutzer, aber wenn ich mehr als 5 auswähle, bekomme ich einen Fehler. Aber anstelle von Fehler möchte ich den Fehler retten, der nicht für Benutzer create arbeitet, aber für Benutzeraktualisierung funktioniert. –
Inside begin & rescue Block Sie führen @ user.save aus, wo Sie die Parameter zur Benutzerzeile User.new (params [: user]) hinzufügen? – power