我是 Rails 新手,很难将外键 user_id
分配给 user_profile
。
当用户创建帐户时,该帐户将保存到数据库中,然后他们将被引导创建个人资料。用户可以创建配置文件并将配置文件保存到数据库中。我曾经有过
<tr>
<th><%= f.label(:user_id, "User ID") %></th>
<td><%= f.text_field(:user_id) %></td>
</tr>
分配 在用户个人资料表单上,它起作用了,user.user_profile 显示存在关系。但我不希望用户必须/能够选择他们为其创建配置文件的 user_id。我不知道如何将 user_id 分配给 user_profile。在我的 user_profiles Controller 中
def new
@user = User.find(session[:user_id])
@user_profile = UserProfile.new({:user_id => @user.id})
end
对于 user_profiles 的新页面,我有
<%= form_for(:user_profiles, :url => {:action => 'create', :user_id => @user.id}) do |f| %>
<%= render(:partial => "form", :locals => {:f => f}) %>
<% end %>
有什么想法吗?谢谢您
最佳答案
假设你使用的是rails 4,你只需要添加到User.rb
has_many :user_profiles, dependent: :destroy
并进入 user_profile.rb
belongs_to :user
validates :user_id, presence: true
user_profiles_controller.rb
def create
@user_profile = current_user.user_profiles.build(user_profile_params)
....
end
private
def user_profile_params
params.require(:user_profile).permit(:param1, :param2)
end
表单 View
<%= form_for(@user_profile) do |f| %>
<%= render(:partial => "form", :locals => {:f => f}) %>
<% end %>
关于mysql - 在 ruby Rails 中分配外键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21066127/