所以我有一个看起来像这样的观察者:
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,但它甚至没有抛出异常,只是导致没有返回任何内容,我觉得这是最离奇的,我不确定如何开始调试它。
答案 0 :(得分:1)
看起来你实际上并没有在任何地方为用户分配用户。尝试:
def create
@recipe = current_user.recipes.build(params[:recipe])
@recipe.save
respond_with @recipe, :notice => "You've created a recipe!"
end