사용자가 5 페이지를 초과하는 것을 차단하려고합니다. 내 페이지 모델은 다음과 같습니다.카운터 캐시를 사용하여 최대 관계 수 제한
class Page < ActiveRecord::Base
belongs_to :user, :counter_cache => true
has_friendly_id :name, :use_slug => true, :strip_non_ascii => true
validates_uniqueness_of :name, :case_sensitive => false
validates_presence_of :name
end
그리고 나는 증가하고 감소하는 db에 열을 추가했습니다.
나는 오류를 던져 너무 많은 태그를 추가하지 못하도록 내 컨트롤러에 무엇을 넣어야할지 모릅니다.
다시 한번 감사
- 업데이트 -
이이처럼 내 사용자 모델은 지금 모습입니다 : 당신은 사용자 -의 사용자 측에 :before_add
콜백을 사용할 수 있습니다
class User < ActiveRecord::Base
has_many :pages, :dependent => :destroy, :before_add => :enforce_page_limit
# Include default devise modules. Others available are:
# :token_authenticatable, :encryptable, :confirmable, :lockable, :timeoutable and :omniauthable
validates_presence_of :name
validates_uniqueness_of :name, :email, :case_sensitive => false
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
# Setup accessible (or protected) attributes for your model
attr_accessible :name, :email, :password, :password_confirmation, :remember_me
has_friendly_id :name, :use_slug => true, :strip_non_ascii => true
private
def enforce_page_limit
if self.pages_count >= 1
self.errors.add_to_base "Page limit reached, can't add another page"
raise "User page limit reaching, preventing page from being added"
end
end
end
덕분에, 나는 개념을 얻을 수 있지만 그 방법 밖에 이해의 내 필드입니다. 초보자 일뿐입니다! 내가 볼 수있는 자습서를 알게 되었습니까? 보내 주신 링크를 통해 살펴 보았지만 나에게 충분히 명확한 내용은 볼 수 없었습니다. 다시 한 번 감사드립니다 –
몇 가지 샘플 코드로 답변을 업데이트했는데 도움이됩니까? – ctcherry
정말 대단합니다. 다시 한번 감사드립니다. 나는 성공하지 않고 내 솔루션을 시험해보고있었습니다. 내 사용자 모델에 코드를 넣었지만 적용하지 않는 것 같습니다. 오류가 표시되지 않습니다. 카운트를 1로 줄 였지만 새 페이지를 만들 수 있습니다. 코드를 첫 번째 편집에 넣을 것입니다. –