Добавить отслеживаемый (разработка) к существующей модели пользователя? - PullRequest
0 голосов
/ 02 декабря 2018

Проблема: Ранее я создал модель пользователя с минимальным количеством информации об устройстве.Я видел, что у devise есть «отслеживаемая» система, и хотел внедрить ее в существующую модель.Я добавил:

class AddSignInCountToUsers < ActiveRecord::Migration[5.2]
  def change
    add_column :users, :sign_in_count, :integer
  end
end

Чтобы проверить миграцию, и она не будет работать.(Я также пробовал эту миграцию со значением «default: 0, null: false» с теми же результатами.

Проблемы, кажется, возникают, когда я добавляю «: trackable» в модель устройства.

Я получаю эту ошибку при входе в систему:

NoMethodError in Devise::SessionsController#create
undefined method `current_sign_in_at' for #<User:0x00007f484e5ef770>
#line with red highlight
        match ? attribute_missing(match, *args, &block) : super

Ошибка в CMD первые несколько строк :

NoMethodError (undefined method `current_sign_in_at' for #<User:0x00007f484e5ef770>):

activemodel (5.2.1) lib/active_model/attribute_methods.rb:430:in `method_missing'

Маршруты:

  devise_for :users, controllers: { confirmations: 'confirmations' }

Модель:

  devise :database_authenticatable, :registerable,
          :confirmable, :recoverable, :rememberable, :validatable, :trackable

        def active_for_authentication?
          super && approved
        end

        def inactive_message
          approved? ? super : :not_approved
        end
...
...
...

Это проблема устройства или она вызывается в другом месте?

Возможно, проблема также связана с существующей моделью (не уверен, почему это так, но на всякий случай), потому что если это так, я мог бы переопределить t и воссоздать ее, поскольку она все еще находится в разработке.

Я хочу воспользоваться всем, что может предложить Devise, и хочу перенести остальные функции устройства в мою модель. У кого-нибудь есть предложение или два?

Ответы [ 2 ]

0 голосов
/ 02 декабря 2018

ОТВЕТ:

(обнаружен вскоре после этого на SO: NoMethodError в Devise :: SessionsController # создать неопределенный метод `current_sign_in_at ')

Ответ, присвоенный зеленой галочкой, помог.

Сначала я попытался просто добавить отслеживаемый, не сработал и по какой-то причине не перенес (не сохранил ошибку)

Но ихнапример, первый recc для использования:

rake db:migrate:down VERSION=20140126101944 # use version of the user migration
rake db:migrate up VERSION=20140126101944 # use version of the user migration

Единственная проблема, с которой я столкнулся, это все другие миграции, которые я добавил в таблицу пользователей, не переносились вместе с ней (имя и т. д.), поэтому япришлось заново перенести evertyhing обратно.

Чтобы прояснить, как кто-то еще предложил, мне нужно больше столбцов, чем только один для отслеживания для работы.Так что, возможно, это была общая проблема здесь.

0 голосов
/ 02 декабря 2018

Модуль Trackable ожидает больше, чем просто атрибут sign_in_count.Полный список обязательных столбцов приведен в документации Если вы добавите еще одну миграцию для оставшихся столбцов, все должно работать как положено.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...