2

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

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

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

rails generate simple_private_messages:model User Message

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

    rails generate devise User

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

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

我的设计链接已经停止工作:

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

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

4

1 回答 1

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
于 2011-05-07T14:42:50.090 回答