내 레일 프로젝트에서 strong_parameters gem을 사용하고 있습니다. 모든 모델에 적용하려면 이니셜 라이저를 만들고 아래 코드를 넣으십시오.이니셜 라이저를 제외하고 추가하는 방법은 무엇입니까?
ActiveRecord::Base.send(:include, ActiveModel::ForbiddenAttributesProtection)
이제는 투표라는 모델에 적용하고 싶지 않습니다. 그 모델을 제외하도록 도와주세요.
내 레일 프로젝트에서 strong_parameters gem을 사용하고 있습니다. 모든 모델에 적용하려면 이니셜 라이저를 만들고 아래 코드를 넣으십시오.이니셜 라이저를 제외하고 추가하는 방법은 무엇입니까?
ActiveRecord::Base.send(:include, ActiveModel::ForbiddenAttributesProtection)
이제는 투표라는 모델에 적용하고 싶지 않습니다. 그 모델을 제외하도록 도와주세요.
내가 원하는 모든 모델에 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
괜찮습니다. 그러나 프로젝트에 100 개 이상의 모델이 포함되어 있다면 좋은 선택이 아닙니다. –
모델 전체를 반복하여 포함 시키면 좋을까요? – hakcho
하나의 클래스를 제외 할 수는 없습니까? –
이 [hack] (http://stackoverflow.com/a/2088389/2767755)을 적용 할 수 있습니다. 작은 크기 프로젝트의 경우 –