Spl*_*nia 4 ruby ruby-on-rails mkdir devise ruby-on-rails-3
我正在尝试在用户注册后立即创建一个文件夹,所以我覆盖了注册控制器上的创建操作(设计),但我不知道如何访问新创建的用户以创建具有其名称的文件夹稍后上传文件.
到目前为止,我有这个:
class RegistrationsController < Devise::RegistrationsController
def new
super
end
def create
super
create_folder
end
def update
super
end
def create_folder
path = Pathname.new(':rails_root/tmp/')
directory_name = ":current_user"
Dir.mkdir(path, directory_name) unless File.exists?(directory_name)
end
end
Run Code Online (Sandbox Code Playgroud)
的routes.rb
devise_for :users, :controllers => {:registrations => "registrations"}
Run Code Online (Sandbox Code Playgroud)
我按照这个来覆盖注册控制器.
我很感激我能得到任何帮助.
您应该真正在动作中完成此功能after_filter,而不是在动作本身中:
class RegistrationsController < Devise::RegistrationsController
after_filter :create_folder, :only => :create
protected
def create_folder
path = Pathname.new(Rails.root.to_s + '/tmp/') #=> Note 1
directory_name = resource.id.to_s #=> Note 2
Dir.mkdir(path + directory_name) #=> Note 3
end
end
Run Code Online (Sandbox Code Playgroud)
备注:
:rails_root无法从单引号内插入 - 并且它不存在,无论如何.试试吧Rails.root.to_s.":current_user"只是一个字符串,它将尝试命名目录:current_user,既不是动态的也不是有效的.因为您的Devise控制器可以访问当前resource(在本例中代表current_user),所以请检索resource.id并使用它.path和directory_name连接+,而不是,.不需要unless条件,因为您可能只在创建新用户时创建新文件夹,并且每个用户都具有唯一性id.| 归档时间: |
|
| 查看次数: |
2313 次 |
| 最近记录: |