私はRailsに非常に慣れていないため、少し苦労しています。
基本的なサインアップ、編集プロセスに従うユーザーがいます。
ユーザーが「部分登録」できる状況があります。つまり、既存のユーザーによる招待プロセスを介してそこに配置されたランダムなパスワードを持つデータベース内のユーザーの電子メールアドレスです。
データベースに技術的に既に存在する招待されたユーザーが登録しようとすると、ユーザーオブジェクトとテーブルの一意のインデックスに一意性チェックが適用されているため、「電子メールは既に存在します」と表示されます。
これをオフにし、create メソッド内で if ステートメントを使用して、ユーザーが存在するかどうかを確認し、他の値が更新または新規作成されて保存されていることを確認しました。すべての if 条件が無視され、新しいユーザーが作成されました。
私がしたいのは、ユーザーを「作成」するのと同じ登録フォームを使用して、既存の「部分登録済み」ユーザーを入力したパスワードと名前 (電子メールアドレスチェック) で更新し、他のデータベースフラグが true に設定されている場合です。ユーザーが存在するが条件が満たされていない場合は、「パスワードを忘れた」ページをロードするか、ユーザーが新しいユーザーである場合は作成して保存します。
上記を達成する方法についての支援やアドバイスは素晴らしいでしょう。
ありがとう
ヴィッキー
これが私のセットアップです:
ユーザークラス
class User < ActiveRecord::Base
attr_accessor :password
attr_accessible :email, :name, :password, :password_confirmation, :tandc
email_regex = /\A[\w+\-.]+@[a-z\d\-.]+\.[a-z]+\z/i
validates :name, :presence => true,
:length => { :maximum => 50 }
validates :email, :presence => true,
:format => {:with => email_regex },
:uniqueness => { :case_sensitive => false }
validates :password, :presence => true,
:confirmation => true,
:length => { :within => 6..40 }
validates :tandc, :presence => true
before_save :encrypt_password
.
.
.
end
私は次のUsersControllerを持っています
def new
@user = User.new
@title = "Sign Up"
end
def create
if @user.save
sign_in @user
redirect_to @user
else
@title = "Sign up"
render 'new'
end
end
def update
if @user.update_attributes(params[:user])
redirect_to @user
else
@title = "Edit"
render 'edit'
end
end
.
.
.
ビューがあります: user > new.html.erb
<%= form_for(@user, :html => { :class => "validateUser", :name =>"edit_user"}) do |f| %>
.
.
.
form stuff here
.
.
.
<% end %>
およびユーザー> edit.html.erb
<%= form_for(@user, :html => { :class => "validateUser", :name =>"edit_user"}) do |f| %>
.
.
.
form stuff here
.
.
.
<% end %>
ユーザーのルートは次のとおりです
users GET /users(.:format) users#index
POST /users(.:format) users#create
new_user GET /users/new(.:format) users#new
edit_user GET /users/:id/edit(.:format) users#edit
user GET /users/:id(.:format) users#show
PUT /users/:id(.:format) users#update
DELETE /users/:id(.:format) users#destroy