2016-09-12 2 views
0

Я пытаюсь создать метод, в котором, когда user регистрируется через мой вход Devise, они вводят оценку, которая затем сохраняется в базе данных дважды (один раз как g_score_start и один раз как . g_score_current Таким образом, позже они могут обновить g_score_current но начиная счет всегда остается тем жеRails: Custom Create Method with Devise

настоящее время у меня это в моем обычае RegistrationsController, но она по-прежнему не сохранение в базе данных:.

class RegistrationsController < Devise::RegistrationsController 
    def create 
    super 
    @user.g_score_current = @user.g_score_start 
    end 
    ... 
end 
может

кто поможет мне это нужно сохранить?

+0

Откуда вы взяли '@ user'? – RSB

+0

@RSB, я предположил, что «@user» будет пользователем, который создается, но подумайте над этим, что, вероятно, очень глупо. Как мне обратиться к создаваемому пользователю? – Liz

+0

Я добавил ответ, пожалуйста, попробуйте это. – RSB

ответ

0

В этом случае вы должны использовать before_create модель обратного вызова вместо, в user.rb

before_create :set_current_store 

def set_current_store 
    self.g_score_current = g_score_start 
end 

Надежда, что помогает!

+0

Отлично! Это сработало отлично. Однако я получаю какое-то странное поведение для вновь созданных пользователей, которые могут или не могут быть связаны. На всякий случай я создал [отдельный вопрос] (http://stackoverflow.com/questions/39455709/rails-newly-created-user-showing-random-information-not-in-database), но если вы встали для вызова мне бы хотелось помочь! – Liz

+0

Собственно, поцарапать это. Как только я избавился от фанк-кода, который у меня ранее был, и поместил ваши новые пользователи, они перестали вести себя странно. Если вы хотите бросить это в качестве ответа на другой вопрос, я тоже его выберу! – Liz

+0

Рад, что помогло! :) – RSB

Смежные вопросы