我已经搜索了大约一个小时,发现了大量描述如何向 Devise 用户模型添加字段的问题。但是,我找不到任何可以清楚地解释如何将一个或多个模型添加到注册过程的方法。
在注册时,我希望用户填写电子邮件地址、密码以及我的客户模型、公司模型和地址模型(这样我就拥有了 web 应用程序正常运行所需的所有信息)。
我的模型是这样的
用户.rb
class User < ActiveRecord::Base devise :database_authenticatable, :registerable, :recoverable, :rememberable, :trackable, :validatable attr_accessible :email, :password, :password_confirmation, :remember_me, :client belongs_to :client end
客户端.rb
class Client < ActiveRecord::Base attr_accessible :bankaccount, :email, :logo, :mobile, :phone, :website has_many :users has_one :company has_one :address accepts_nested_attributes_for :company, :address end
我认为这样做的唯一方法是创建自己的 RegistrationsController 以便我可以这样做@client = Client.new
,然后在我的视图中这样做:
<%= f.simple_fields_for @client do |ff| %> <%= f.simple_fields_for :company do |fff| %> <% field_set_tag t(:company) do %> <%= ff.input :name %> <% end %> <% end %> <%= f.simple_fields_for :address do |fff| %> //address inputs <% end %> <% end %> <fieldset> <legend><%= t(:other) %></legend> // other inputs </fieldset> <% end %>
我需要它以这种方式工作的原因是因为我有多个用户可以代表同一个客户端(因此需要访问相同的数据)。我的客户拥有应用程序中的所有数据,因此需要在使用应用程序之前创建。