2014-01-11 45 views
0

我是新來的鐵軌,我很難分配外鍵user_iduser_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我有

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 %> 

什麼想法?謝謝

+0

如果你不想讓用戶能夠選擇他們的'user_id',那麼我不知道你爲什麼有一個表單域輸入。你是如何設置你的'User'和'UserProfile'模型的? – Bobby

回答

0

假設你是在軌道上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 

form view

<%= form_for(@user_profile) do |f| %> 
    <%= render(:partial => "form", :locals => {:f => f}) %> 
<% end %> 
+0

謝謝你,非常有幫助 – user3185678