这可能是一个奇怪的问题,但它出现在我最近一直在从事的一个项目中。
我有一个名为 Student 的设计模型,它有一个独特的 :sid 参数。数据库中的 Student 表已经填充了仅设置了 :sid 值的 Student 对象。我需要让学生使用他们的 :sid 进行注册,设置 Student 对象的其他属性并进行任何必要的设计设置。
我到底应该如何设置注册?现在,我正在使用带有以下代码的自定义设计注册控制器:
# 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 对象。
我不知道将有效的 :sids 列表存储在其他地方是否更有意义,或者我是否应该完全做其他事情来完成这项工作。
编辑:至于我的主要问题,我想知道这是否是仅允许从使用任意值选择的现有用户对象池中进行注册的最佳方法。