Пожалуйста, дайте мне знать, если я собираюсь сделать это неправильно. Я пытаюсь добавить пару настраиваемых атрибутов в User в метод create, а также вызвать метод Analytics, если пользователь сохранен.Overwriting 'Devise :: RegistrationsController' с пользовательским созданием дает NoMethodError
Я определил новый контроллер:
class RegistrationsController < Devise::RegistrationsController
def create
build_resource(sign_up_params)
resource.public_id = Utilities::generate_code
resource.referral_code = Utilities::generate_code
if resource.save
Analytics.identify(
user_id: resource.id.to_s,
traits: { email: resource.email })
yield resource if block_given?
if resource.active_for_authentication?
set_flash_message :notice, :signed_up if is_flashing_format?
sign_up(resource_name, resource)
respond_with resource, :location => after_sign_up_path_for(resource)
else
set_flash_message :notice, :"signed_up_but_#{resource.inactive_message}" if is_flashing_format?
expire_data_after_sign_in!
respond_with resource, :location => after_inactive_sign_up_path_for(resource)
end
else
clean_up_passwords resource
respond_with resource
end
end
end
Единственное отличие в этом создании метода является то, что я добавляю referral_code и public_id до того, как сохранить и работает Analytics после.
Analytics.identify(
user_id: resource.id.to_s,
traits: { email: resource.email })
Когда я создаю пользователя я получаю
undefined method `is_flashing_format?' for #<RegistrationsController:0x007fdba130d9a8>
Я не понимаю, почему этот метод не наследуется. Это даже правильный способ изменения дизайна или добавления атрибутов/добавления аналитики?
Довольно уверен, что сначала ваш класс должен выглядеть как Modelname :: RegistrationsController
Хмм, попадание в фактический контроллер и метод контроллера работает нормально. – Ashbury
Следуя wiki в github, я подозреваю, что вы правы, поэтому я изменил его. Тем не менее, все еще получают неопределенную ошибку метода. – Ashbury