Rails 4 - сильные параметры концепции вовлечения в spree-2.1
Как добавить новые поля для spree:: user в Spree-2.1 + Rails4?
Как и мои старые настройки: ==========================
Spree:: User.class_eval do
attr_accessible :f_name, :l_name :gender
validates :f_name, :presence => true, :length => {:maximum => 25}
validates :l_name, :presence => true, :length => {:maximum => 20}
конец
новая работа с сильными параметрами: ================================
модуль Spree UserRegistrationsController.class_eval do
private
def spree_user_params
params.require(:spree_user).permit(:f_name, :l_name)
end
end
конец
Даже если это не работает, как он получил откат..
Пожалуйста, дайте мне знать ваши комментарии.
2 ответа
Недавно в spree_auth_devise было внесено изменение, которое позволит вам установить разрешенные атрибуты для Spree::User.
Это соответствующая строка кода: https://github.com/spree/spree_auth_devise/blob/ac27effb5998e5875261f08655e442461a031370/app/controllers/spree/user_registrations_controller.rb#L69
Вам нужно добавить f_name и l_name в Spree::PermittedAttributes.user_attributes следующим образом:
# in an initializer
Spree::PermittedAttributes.user_attributes << :f_name
Spree::PermittedAttributes.user_attributes << :l_name
Более подробную информацию о Spree:: PermittedAttributes можно найти в этом запросе на извлечение:
@gmacdougall прав, однако я хочу отметить, что если вы делаете это в расширении, вы можете сделать это через декоратор. Ваше расширение должно было бы определить это в инициализаторе, который устанавливается пользователем через генератор, который не может поддерживаться.
# lib/spree/permitted_attributes_decorator.rb
Spree::PermittedAttributes.class_eval do
@@user_attributes.push(:f_name, :l_name)
end
Вы можете добавить новые атрибуты для многих моделей в модуле Spree:PermittedAttributes. Контроллеры Spree получают эти атрибуты с помощью методов, включенных в модуль Spree::Core::ControllerHelpers::StrongParameters.