4

私はルビー1.8.7でRails3を使用しています。そして、認証に使用します。考案(1.1.3)。しかし、それは私が構築している非常に大きなコミュニティサイトなので、プロファイル用のテーブルとユーザー用のテーブルがあります。また、ユーザーが登録するたびにプロファイルも生成する必要がありますが、デバイスではコントローラーが許可されていないため、完全に失われます。

編集

今それは言う

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

次に、このコードでdate_time.rbという名前のファイルをlibに作成すると

class DateTime
  def getlocal
    "it works"
  end
end

そして、私のアプリケーションコントローラーでそれを必要としますそれは私にこれを与えます

fail wrong number of arguments (1 for 0)

それはもうdeviseと呼ばれるものを知らないようなものですが、私のルートでは私はdeviseを持っています

devise_for :users
4

2 に答える 2

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" }
于 2010-12-28T12:43:38.473 に答える
6

これにコントローラーを関与させる必要は実際にはありません。モデルは、ここですべての面倒な作業を実行できます(実行する必要があります)。

Userモデルとモデルの間に関係があると仮定します。Profileその場合、次のようなことができるはずです。

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
于 2010-12-28T15:57:13.017 に答える