当有STI时,Rails会设计注册表

我不知道如何创建一个工人和一个协会。 所以我能够将它们联系在一起。 我在用户中有一个类型colulm。
这是我的表格(http:// localhost:3000 / workers / sign_up):

Create Worker

resource_name, :url => registration_path(resource_name)) do |f| %>




"devise/shared/links" %>

这是我的模特:

 Class Worker < User devise :database_authenticatable, :registerable end Class Company < User devise :database_authenticatable, :registerable end Class User < Appliaction::Base devise :database_authenticatable, :registerable end 

我想创建一个创建User和Worker的注册表单。 我在Workers表中列了姓名,年龄和地址,我想在注册表中填写。

它应该是嵌套的forms,我应该在worker和User表之间创建关联。

最好的问候,Rails初学者

好的找到了答案,你需要的是为你的子类添加路由,然后将用户直接指向相关的路由,比如这样

 devise_for :companies devise_for :workers 

然后你可能想要为每个人生成视图

 script/rails generate devise:views companies 

如果您的视图中没有重大差异,您只需从公司模板中的用户模板中呈现文件即可

 render :file => 'users/registrations/new' 

在您的控制器和视图中,您仍将使用标准的user_signed_in?

希望如果您找到更好的方法,请告诉我

我想你正在寻找Worker has_one User 。 我认为您不需要从Userinheritance您的Worker类。 如果要在创建Worker之后创建User,可以在after_create回调中执行此操作。