我希望用户注册(Devise)时,在注册表格的同时创建其第一个“个人资料”帐户。
我尝试使用“ fields_for”,但无法正常工作。我可以在注册表单中添加hidden_field,因为尚未创建“用户”。 我该怎么办?
模型
class User < ApplicationRecord
# Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable, and :omniauthable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :validatable,
:trackable
class Profile < ApplicationRecord
belongs_to :user #creator
查看(注册)
<%= form_for(resource, as: resource_name, url: registration_path(resource_name)) do |f| %>
<%= f.fields_for :profiles, resource.profiles.build do |s| %>
<%= s.text_field :name%>
<% end %>
<% end %>
答案 0 :(得分:1)
您可以在模型中回电。
像 public class DownloadFileAsyncTask extends AsyncTask<String,String,String>{
@Override
protected void onPreExecute() {
super.onPreExecute();
//show Progressbar
}
@Override
protected String doInBackground(String... strings) {
//downloadFile()
return null;
}
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
//close spinner
}
}
,然后创建一个配置文件。
您可以在此处查找回调:https://guides.rubyonrails.org/active_record_callbacks.html#available-callbacks
它看起来像这样:
after_save
另一个选择是自己生成一个devise控制器。您可以按照他们的自述文件中的步骤进行操作:https://github.com/plataformatec/devise/wiki/Tool:-Generate-and-customize-controllers
并按照他们的建议,通过添加
class User < ApplicationRecord
# Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable, and :omniauthable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :validatable,
:trackable
after_save :create_profile
def create_profile
Profile.create(user: self,...)
end
end
Profile.new(...)