これは奇妙な質問かもしれませんが、私が最近取り組んでいるプロジェクトで出てきました。
一意の :sid パラメータを持つ Student という Devise モデルがあります。データベースの Student テーブルには、:sid 値のみが設定された Student オブジェクトが既に格納されています。生徒が :sid を使用して登録できるようにし、Student オブジェクトの他の属性を設定し、必要な Devise セットアップを行う必要があります。
世界でどのように登録を設定すればよいですか? 現在、次のコードでカスタム Devise RegistrationController を使用しています。
# inside controllers/students/registration_controller.rb
def create
if Student.exists?(:sid => params[:student][:sid].to_i)
@student = Student.find_by_sid(params[:student][:sid].to_i)
@student.update_attributes(params[:student])
if @student.save
set_flash_message :notice, :signed_up if is_navigational_format?
sign_in(Student, @student)
else
set_flash_message :notice, :sign_up_failed
redirect_to student_registration_path
end
else
set_flash_message :error, :sid_not_found
redirect_to new_student_registration_path
end
end
このコードは、既存の Student オブジェクトを更新するだけです。
有効な :sid のリストを別の場所に保存する方が理にかなっているのか、それともこれを機能させるために何か他のことをする必要があるのか どうかはわかりません。
編集:私の主な質問に関しては、これが、任意の値を使用して選択された既存のユーザー オブジェクトのプールからの登録のみを許可する最善の方法であるかどうか疑問に思っています。