我在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>):
有人可以建议如果无法同时使用它们,我如何整合两者或还原我的更改?
答案 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