2011-08-27 58 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

我忘了说:谢谢! –

相关问题