设计控制器导轨

时间:2010-12-28 12:15:46

标签: ruby-on-rails devise controllers

我在ruby 1.8.7上使用Rails 3。并使用auth。设计(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

2 个答案:

答案 0 :(得分:15)

您可以继承Devise 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

如果要自定义Gem中打包的Devise视图,则可以运行以下命令为应用程序生成视图文件:

rails generate devise:views

您还需要告诉路由器使用您的新控制器;类似的东西:

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

答案 1 :(得分:6)

实际上没有必要让控制器参与其中;模特可以(而且应该)在这里完成所有繁重的工作。

我假设您在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