로컬로 테스트하고 있습니다. 내 ip는 127.0.0.1
입니다. ip_permissions 테이블은 비어 있습니다. 사이트를 탐색하면 모든 것이 예상대로 작동합니다.Routes.rb가 캐시에서 IP를로드하지 않는 이유는 무엇입니까?
이제 금지 된 IP로 사이트를 탐색하려고합니다. 그래서 IP를 ip_permissions 테이블에 다음과 같이 추가합니다.
IpPermission.create!(:ip => '127.0.0.1', :note => 'foobar', :category => 'blacklist')
레일즈 콘솔에서 캐시를 통해 지 웁니다. Rails.cache.clear
. 나는 사이트를 둘러 본다. 나는 pages#blacklist
로 보내지 않습니다.
서버를 다시 시작하는 경우. 사이트를 탐색하면 pages#blacklist
으로 전송됩니다. 왜 ip_permissions 테이블이 업데이트 될 때마다 서버를 다시 시작해야합니까? 캐시를 기반으로 가져 오면 안됩니까? 당신은 시작시 한 번만로드하여 루트 파일에 BlacklistConstraint을 초기화하는
class IpPermission < ActiveRecord::Base
validates_presence_of :ip, :note, :category
validates_uniqueness_of :ip, :scope => [:category]
validates :category, :inclusion => { :in => ['whitelist', 'blacklist'] }
def self.whitelist
Rails.cache.fetch('whitelist', :expires_in => 1.month) { self.where(:category => 'whitelist').all }
end
def self.blacklist
Rails.cache.fetch('blacklist', :expires_in => 1.month) { self.where(:category => 'blacklist').all }
end
end