我想创建一个对象,它既验证父对象的存在又验证父对象的有效性。但是,我想独立于父对象创建它,但我不知道该怎么做。
这是我的代码:
class User
has_many :questions
end
class Question
belongs_to :user
validates_presence_of :user
validates_associated :user
end
我知道我可以这样做:
u = User.create
q = u.questions.create
但我需要这样做
u = User.create
q = Question.create(:user_id => u.id)
q.valid?
=> false
q.errors?
=> <OrderedHash {:user=>["can't be blank"]}>
处理这个问题的正确方法是什么?
我应该使用
class User
...
before(:save) do
self.user = User.find(self.user_id)
end
end
这似乎不必要的混乱 - 有没有更好的方法?