рельсы (5.2.2.1) ruby 2.5.0p0
- Родительский контроллер Country, State, City
class LocalityController < ApplicationController
def create
locality = model_name.new(locality_master_params)
respond_to do |format|
if locality.save
format.html { redirect_to locality, notice: 'Record was successfully created.' }
else
format.html { render :new }
end
end
end
private
def model_name
"#{controller_name.titleize.delete(' ').singularize}".constantize
end
def locality_params
@locality_params = %i|name code status|
end
def locality_master_params
params.require("#{controller_name.singularize}".to_sym).permit(locality_params)
end
end
Контроллер состояния
class StateMastersController < LocalityController
alias_method :state_master_params, :locality_master_params
private
def locality_params
@locality_params = %i|name code status country_code|
end
end
Ожидание : контроллеры страна-штат-город должны быть унаследованы от одного контроллера и управлять одинаковыми шаблонами, методами для всех этих контроллеров до DRY.
Этот код работает нормально, как и ожидалось.
Проблема : после удаления приведенного ниже кода (поскольку он не нужен):
alias_method :state_master_params, :locality_master_params
это дает ошибку как: ActiveModel::ForbiddenAttributesError
Я добавил alias_method
, чтобы предотвратить указанную выше ошибку.
Получение такой же ошибки и в других контроллерах: контроллеры страны-города.
Существует ли какое-либо соглашение об определении метода как state_master_params
для state_master_controller
? `