设计和简单的私人消息

Nir*_*hah 2 ruby-on-rails private-messaging devise

我在Ruby on Rails 3应用程序中使用Devise.我试图在我的应用程序中实现私人消息传递,我遇到了这个宝石:

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

我(不小心)运行了以下命令.

rails generate simple_private_messages:model User Message
Run Code Online (Sandbox Code Playgroud)

它创建了Message模型.但它改变了我使用以下命令使用Devise生成的现有User模型的一些属性:

    rails generate devise User
Run Code Online (Sandbox Code Playgroud)

现在,当我启动Ruby on Rails应用程序时,我收到此警告:

[警告]您提供了devise_for:users但您的应用程序中没有定义用户类型

我的Devise链接已停止工作:

ActionView :: Template :: Error(##:0x1064c9490>的未定义局部变量或方法`edit_user_registration_path'):

有人可以建议如果不能同时使用它们,我如何整合两者或还原我的更改?

Cla*_*esi 7

我按照以下步骤安装了gem:

rails generate devise:install

rails generate devise User

rails generate simple_private_messages:model User Message
Run Code Online (Sandbox Code Playgroud)

将此行(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
Run Code Online (Sandbox Code Playgroud)

结束

编辑routes.rb文件,这里的顺序很重要,应该在消息路由之前定义devise_for.

devise_for :users

resources :users do
    resources :messages do
        collection do
            post :delete_selected
        end
    end
end
Run Code Online (Sandbox Code Playgroud)

如果你想要脚手架:

rails generate simple_private_messages:scaffold User Message
Run Code Online (Sandbox Code Playgroud)

并记得取消注释(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
Run Code Online (Sandbox Code Playgroud)