@RadBrad는 세 가지 배너 세트를 나타내는 다른 모델에 has_many
를 사용할 수있는 포인트를합니다. 어쩌면 BannerSet 또는 이와 비슷한 호출 할 수 있습니다. 그가 말했던 것처럼 세 가지를 동시에 만들 수도 있고 BannerSet 유효성 검사에서 세 개의 배너 만 연결할 수도 있습니다.
BannerSet 모델에도 3 개의 배너 ids가있는 특성 (열)이있을 수도 있습니다. 당신은 그것이 항상 3 개의 배너가 될 것이 확실하다면, 그것은 훌륭한 디자인 일 수도 있습니다.
하지만 여기서는 가장 좋은 방법은 아닌 Banner 컨트롤러가있는 경우 어떻게 할 것입니까?
첫째, 당신은 아마도 컨트롤러 declarative authorization을 사용할 수
authorization do
has_permission_on :banners, :to => [:new, :create] do
Banner.count < 3
end
end
는 여전히 또한, 당신이 그것을 추가 생성 화면에 도착 후 추가 된 경우에도 배너를 추가 할 수 있도록하려면 배너 모델에 유효성 검사를 추가하십시오.
before_create :validate_max_banners
def validate_max_banners
errors.add_to_base("Only 3 banners are allowed.") if Banner.count == 3
errors.empty?
end
해당 테이블에는 3 개의 행만있을 수 있습니다. 그렇게하려면 this q&a에 설명 된대로 DB 측면에서 방아쇠 등이 필요합니다. 그러나 기본적인 해결책을 위해서는 괜찮을 수도 있습니다.
RailsAdmin을 매우 쉽게 구성하고 사용자 지정할 수 있지만 (설명서의 경우 wiki 참조) 더 많은 사용자 지정이 필요한 경우 ActiveAdmin을 사용하는 것이 좋습니다.