2011-08-27 81 views
0

當我的用戶創建一個對象應該有他的id時,id出來nil。想法爲什麼?新對象belongs_to不會與創建它的Devise用戶關聯

# controllers/units_controller.rb 

class UnitsController < ApplicationController 
    before_filter :authenticate_user! 

    def new 
    @unit = Unit.new 
    @unit.user = current_user # also tried .user_id = current_user.id 
[...] 


# models/unit.rb 

class Unit < ActiveRecord::Base 
    belongs_to :user 
    # :user has_many :units too 
[...] 

對象被成功地保存,但用空user_id字段(示出nil)。 不會引發異常。保存時沒有回調。

+0

需要更多信息。是否有拋出的異常或者只是沒有保存?如果後者,也許單位不具有'user_id'?單位保存有回調嗎? '@ unit'是否成功保存?顯示代碼後是否保存''@ unit'? – numbers1311407

+1

您是否嘗試過'current_user.build_unit'或'current_user.create_unit'?這是你的#new行爲的整體嗎?你的#create動作是什麼樣的?如果你在標準的Rails中執行這兩步(#new(POST) - > #create),那麼你需要在#create動作中將Unit和current_user關聯起來。 – andrewle

+0

@andrewle:正如「[...]」所示,這不是'#new'的全部。然而,你讓我意識到'@ unit.user'分配應該放在'Unit#create'方法中,它解決了這個問題。你能否做出回答,讓出現同樣問題的人看到答案? –

回答

0

如果你在標準Rails中執行這兩步(#new(POST) - > #create),那麼你需要在#create動作中將Unit與current_user關聯起來。

def create 
    @unit = Unit.new 
    @unit.user = current_user 
    # ... 
end 
+0

我忘了說:謝謝! –

相關問題