设计控制器轨

我使用Rails 3,关于红宝石1.8.7。 并使用身份验证。 设计(1.1.3)。 但它是一个相当大的社区网站我建的,所以我有一个配置文件表和用户表。 而每一次用户注册也应该产生一个轮廓,但在色器件我不会允许的控制器,所以我完全失去了..

编辑

现在它说

undefined method `getlocal' for Tue, 28 Dec 2010 11:18:55 +0000:DateTime

后来,当我在做的lib文件名为date_time.rb使用此代码

class DateTime def getlocal "it works" end end

并要求它在我的应用程序控制器,它给了我这个

fail wrong number of arguments (1 for 0)

它就像它不知道什么叫色器件了,但在我的路线我有色器件

devise_for :users

--------------解决方案-------------

你也可以继承的设计RegistrationsController并在create()方法添加自己的逻辑,并呼吁一切父类的方法。

class MyRegistrationsController < Devise::RegistrationsController
prepend_view_path "app/views/devise"

def create
super
# Generate your profile here
# ...
end

def update
super
end
end

如果您想自定义打包宝石内部的设计意见,那么你可以运行下面的命令来为您的应用程序的视图文件:

rails generate devise:views

您还需要告诉路由器使用新的控制器; 就像是:

devise_for :users, :controllers => { :registrations => "my_registrations" }

有没有真正的需要涉及该控制器; 模型可以(也应该)做所有繁重的工作在这里。

我假设你有关系UserProfile模型,在这种情况下,你应该只能够做这样的事情:

class User < ActiveRecord::Base
has_one :profile # could be a belongs_to, but has_one makes more sense

after_create :create_user_profile

def create_user_profile
create_profile(:column => 'value', ...)
end
end

分类:Ruby on Rails的 时间:2013-05-29 人气:0
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 0.462 (s). 10 q(s)