[RUBY-ON-RAILS] has_many 협회의 개체 수 제한
RUBY-ON-RAILShas_many 협회의 개체 수 제한
나는 사진을 has_many 앨범을 가지고있다. counter_cache 설정 앨범 테이블의 photos_count 열을 업데이트합니다. 어떻게 앨범을위한 사진의 수를 제한 할 수 있습니까?
해결법
-
==============================
1.내 경우, validates_length_of 사용하기에 충분했다 :
내 경우, validates_length_of 사용하기에 충분했다 :
class Album has_many :photos validates_length_of :photos, maximum: 10 end class Photo belongs_to :album validates_associated :album end
-
==============================
2.검증 후크를 사용하여
검증 후크를 사용하여
class Album has_many :photos validate_on_create :photos_count_within_bounds private def photos_count_within_bounds return if photos.blank? errors.add("Too many photos") if photos.size > 10 end end class Photo belongs_to :album validates_associated :album end
-
==============================
3.어떻게 사진 모델에 지정 유효성 검사 방법을 추가하는 방법에 대한?
어떻게 사진 모델에 지정 유효성 검사 방법을 추가하는 방법에 대한?
LIMIT = 50 validate_on_create do |record| record.validate_quota end def validate_quota return unless self.album if self.album.photos(:reload).count >= LIMIT errors.add(:base, :exceeded_quota) end end
-
==============================
4.
ActiveRecord::Base.transaction do ActiveRecord::Base.connection.execute('LOCK TABLE pictures IN EXCLUSIVE MODE') if (@album.pictures.count < 10) @album.pictures.create() end end
나는 이것이 가장 정확한 솔루션입니다 생각합니다. 그것은 동시성 문제 / 경쟁 상태에 대해 보호합니다.
from https://stackoverflow.com/questions/2263267/limit-number-of-objects-in-has-many-association by cc-by-sa and MIT license
'RUBY-ON-RAILS' 카테고리의 다른 글
[RUBY-ON-RAILS] 레일 RSpec에 카피 바라 및 방법을 사용하여 정의 '방문' (0) | 2020.02.29 |
---|---|
[RUBY-ON-RAILS] 사용 HTML5 데이터에 가장 좋은 방법은 레일 content_tag 도우미와 속성? (0) | 2020.02.29 |
[RUBY-ON-RAILS] 루비 온 레일즈 MVC는 무엇입니까? (0) | 2020.02.29 |
[RUBY-ON-RAILS] 당신은 소스없이 레일 응용 프로그램에 루비를 배포 할 수 있습니까? (0) | 2020.02.29 |
[RUBY-ON-RAILS] 레일 3 시간대 (0) | 2020.02.29 |