Mongoid回调关系无法按预期工作

时间:2011-07-15 23:55:51

标签: ruby-on-rails mongoid

所以我有一个看起来像这样的观察者:

class RecipeObserver < Mongoid::Observer

  def after_create(object)
    puts object.user
    puts "test"
  end

end

所以我的工作正常,但关系object.user是零,就像我的食谱类belongs_to是一个用户,has_many也是如此。我在这里做错了什么?


更新

所以这是我的控制器代码和我的模型,如果有人可以告诉我如何创建另一个对象的正确观察者工作,这将是非常有帮助的:

class RecipesController < ApplicationController
  respond_to :html
  before_filter :authenticate_user!, :only => :new

  # ... other actions

  def new
    @recipe = Recipe.new
    respond_with @recipe
  end

  def create
    @recipe = Recipe.new(params[:recipe])
    @recipe.save

    respond_with @recipe, :notice => "You've created a recipe!"
  end
end

我的模型(为简洁而截断):

class Recipe
  include Mongoid::Document

  # ... other methods and such

  belongs_to :user
end

class User
  include Mongoid::Document

  field :name

  # ... other methods and such

  has_many :recipes
end

所以最大的问题是在object.user方法中调用after_create是nil,但它甚至没有抛出异常,只是导致没有返回任何内容,我觉得这是最离奇的,我不确定如何开始调试它。

1 个答案:

答案 0 :(得分:1)

看起来你实际上并没有在任何地方为用户分配用户。尝试:

def create
  @recipe = current_user.recipes.build(params[:recipe])
  @recipe.save

  respond_with @recipe, :notice => "You've created a recipe!"
end