设计和简单的私人消息

时间:2011-05-07 12:59:49

标签: ruby-on-rails devise private-messaging

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

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

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

rails generate simple_private_messages:model User Message

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

    rails generate devise User

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

  

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

我的Devise链接已停止工作:

  

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

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

1 个答案:

答案 0 :(得分:7)

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

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

编辑routes.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