3

我有一个 Rails 应用程序。我安装了设计。我想在用户模型和不同的配置文件之间建立多态关联,例如:学生和导师。

这就是我想要做的:有一个学生注册页面,其中包含常规设计字段,例如:email、、。但我也希望有特定于学生资料的字段,例如和passwordpassword_confirmationresidency_typegraduation_year

user.rb
class User < ActiveRecord::Base
  belongs_to :profile, polymorphic: true

student_profile.rb
class StudentProfile < ActiveRecord::Base
  has_one :user, as: :profile, dependent: :destroy

registrations_controller.rb
class RegistrationsController < Devise::RegistrationsController
  def new_student_registration
    resource = build_resource({})
    respond_with resource
  end
...

我可以在控制台上创建一个带有学生个人资料的用户,就像这样......

u = User.new
u.email = "something@whatever"
... (password and password confirmation)
u.profile = StudentProfile.new
u.graduation_year = "2014"
u.save

问题是,我不知道如何设置控制器和一个表单来做到这一点。我该怎么做?请注意用户和学生资料之间的关系。

4

2 回答 2

0

我最好的建议是覆盖设计视图和注册控制器并使用表单对象来注册用户。这是关于表单对象的一个​​很好的资源:http: //blog.jasonharrelson.com/blog/2014/04/06/how-i-design-rails-applications-part-2-form-objects/

ActiveModel::Model对于创建表单对象非常有用,尽管有些人更喜欢使用一些 gem,例如改革

我希望这会有所帮助!

于 2014-10-30T05:52:28.393 回答
0

观看此 Rails 演员剧集http://railscasts.com/episodes/210-customizing-devise

对于配置文件,我认为您只需要在新页面表单中添加该字段,并在用户模型中使其接受嵌套属性。要知道配置文件是什么,您可以有一个选择框和一个前置过滤器,以查看基于该值的配置文件

于 2013-03-01T23:16:50.033 回答