2015-01-08 1 views
0

내 레일 프로젝트에서 strong_parameters gem을 사용하고 있습니다. 모든 모델에 적용하려면 이니셜 라이저를 만들고 아래 코드를 넣으십시오.이니셜 라이저를 제외하고 추가하는 방법은 무엇입니까?

ActiveRecord::Base.send(:include, ActiveModel::ForbiddenAttributesProtection) 

이제는 투표라는 모델에 적용하고 싶지 않습니다. 그 모델을 제외하도록 도와주세요.

+0

이 [hack] (http://stackoverflow.com/a/2088389/2767755)을 적용 할 수 있습니다. 작은 크기 프로젝트의 경우 –

답변

0

내가 원하는 모든 모델에 module을 포함 시키십시오. 당신이하는 일은 좋은 생각이 아닌 원숭이 패치 ActiveRecord입니다.

UPDATE 여기

당신은 당신이 좋아하는 모델 ActiveModel::ForbiddenAttributesProtection 만 포함 할 수있는 솔루션입니다. 이니셜 라이저에 코드를 넣으십시오.

all_models = Dir["#{Rails.root}/app/models/**/*.rb"].map do |filename| 
    filename[/(?<=models\/).*(?=\.rb)/].camelize.constantize 
end 

models_without_forbidden_attributes_protection = [Foo] # put your filtered classes here 

all_models.each do |model| 
    unless models_without_forbidden_attributes_protection.include?(model) 
    model.send(:include, ActiveModel::ForbiddenAttributesProtection) 
    end 
end 
+0

괜찮습니다. 그러나 프로젝트에 100 개 이상의 모델이 포함되어 있다면 좋은 선택이 아닙니다. –

+0

모델 전체를 반복하여 포함 시키면 좋을까요? – hakcho

+0

하나의 클래스를 제외 할 수는 없습니까? –