Придумайте и просто-приватные сообщения
Я использую 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