mysql - 在 ruby​​ Rails 中分配外键

标签 mysql ruby-on-rails foreign-keys

我是 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/

相关文章:

php - 使用 MySQL 和 PHP 显示用户信息

c# - 带有 Entity Framework 的 MySql 连接器 : Comparing Char(36) GUIDs in a LINQ Where clause

ruby-on-rails - 为什么 Awesome Print 在某些 Rails 集合对象上不起作用?

javascript - Rails - 使用 Javascript/HTML 上传文件

具有延迟外键的 Android Room

php - 在 Laravel 中编辑具有多对多关系的表

php - 在foreach中插入查询不插入

mysql - 使用 union 或 join 将两个查询的结果相加

ruby-on-rails - Trivia 游戏的 Controller 和 View 代码

sql - 父删除时不删除子记录