0
내 응용 프로그램에서 사용자가 등록하면 일부 파일을 업로드 할 수 있습니다. 업로드를 최대 5 개의 파일로 제한해야합니다. 그래서 코드를ActiveRecord :: NestedAttributes :: TooManyRecords 오류
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
및
class Fileupload < ActiveRecord::Base
belongs_to :user
end
을 다음과 같이하고 두 모델이 내 만들고 그 위의 코드에서 볼 수 있듯이 업데이트 작업은 내가
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
을 추가, I limit: 5
과 validate
콜백을 사용하고 있습니다. 그러나 둘 모두는 사용자를 업데이트 할 때 완벽합니다. 그러나 사용자가 생성되면이 오류 메시지는 전혀 복구되지 않습니다. 이 오류가 발생합니다.
ActiveRecord::NestedAttributes::TooManyRecords in UsersController#create
Maximum 5 records are allowed. Got 7 records instead.
사용자가 업데이트하는 동안 제한 및 유효성 검사가 작동하지만 사용자 생성 중에는 작동하지 않는 이유는 무엇입니까? 그리고 행동을 창조하기 위해 그것이 어떻게 작동하게 하는가?
보기에 7 개의 레코드가있는 경우 탐색기 콘솔로 html 코드를 확인 했습니까? –
예! 또한 5 파일을 선택하면 사용자를 저장하지만 5 이상을 선택하면 오류가 발생합니다. 하지만 오류 대신 사용자 생성을 위해 작동하지 않지만 사용자 업데이트를 위해 작동하는 오류를 해결하고 싶습니다. –
begin & rescue 블록 내부에서 사용자 행 User.new (params [: user])에 매개 변수를 추가하는 @ user.save를 수행 하시겠습니까? – power