Придумайте и просто-приватные сообщения

Я использую Devise в своем приложении Ruby on Rails 3. Я пытаюсь реализовать частную передачу сообщений в моем приложении, и я наткнулся на этот драгоценный камень:

https://github.com/jongilbraith/simple-private-messages

Я (случайно) выполнил следующую команду.

rails generate simple_private_messages:model User Message

Он создал модель сообщения. Но это изменило некоторые свойства моей существующей модели User, которую я сгенерировал с помощью Devise с помощью следующей команды:

    rails generate devise User

Теперь, когда я запускаю свое приложение Ruby on Rails, я получаю это предупреждение:

[ПРЕДУПРЕЖДЕНИЕ] Вы указали devise_for:users, но в вашем приложении не определена модель User

И мои Devise ссылки перестали работать:

ActionView:: Template:: Error (неопределенная локальная переменная или метод `edit_user_registration_path'для #<#: 0x1064c9490>):

Может кто-нибудь подсказать, как я могу интегрировать оба или отменить свои изменения, если невозможно использовать их одновременно?

1 ответ

Решение

Я следовал за этими шагами, чтобы установить драгоценный камень:

rails generate devise:install

rails generate devise User

rails generate simple_private_messages:model User Message

Добавьте эту строку (has_private_messages) в модель пользователя:

class User < ActiveRecord::Base
    # Include default devise modules. Others available are:
    # :token_authenticatable, :encryptable, :confirmable, :lockable, :timeoutable and :omniauthable
    devise :database_authenticatable, :registerable,
        :recoverable, :rememberable, :trackable, :validatable

    # Setup accessible (or protected) attributes for your model
    attr_accessible :email, :password, :password_confirmation, :remember_me

    has_private_messages

конец

Отредактируйте файл route.rb, здесь важен порядок, devise_for должен быть определен до маршрутов сообщений.

devise_for :users

resources :users do
    resources :messages do
        collection do
            post :delete_selected
        end
    end
end

Если вы хотите эшафот:

rails generate simple_private_messages:scaffold User Message

И не забудьте раскомментировать это (attr_accessor: to):

class Message < ActiveRecord::Base

  is_private_message

  # The :to accessor is used by the scaffolding,
  # uncomment it if using it or you can remove it if not
  attr_accessor :to
end
Другие вопросы по тегам