【问题标题】:Devise user with Polymorphic association for different user profiles为不同的用户配置文件设计具有多态关联的用户
【发布时间】:2013-03-01 19:52:36
【问题描述】:

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

这就是我想要做的:有一个学生注册页面,其中包含常规设计字段,例如:emailpasswordpassword_confirmation。但我也希望有特定于学生资料的字段,例如 residency_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

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

【问题讨论】:

  • 您解决了这个问题吗?您介意发回您的解决方案吗?

标签: ruby-on-rails ruby polymorphism polymorphic-associations


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    我最好的建议是覆盖设计视图和注册控制器并使用表单对象来注册用户。这是关于表单对象的一个​​很好的资源:@​​987654321@

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

    希望对你有帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-02
      • 1970-01-01
      • 2014-06-27
      相关资源
      最近更新 更多