親オブジェクトの存在を検証し、親オブジェクトの妥当性を検証するオブジェクトを作成したいと考えています。しかし、私はそれを親オブジェクトとは独立に作成したいと思います。どうすればよいか分かりません。バリデーションのbelongs_toバリデーションとvalidates_presenceバリデーションの両方を持つオブジェクトを作成する正しい方法は何ですか?
これは私のコードです:
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
を使用する必要があります - より良い方法はありますか?
Peterさん、Userオブジェクトが作成され、新しいQuestionオブジェクトによって参照される前に保存されているかどうか不思議です。また、なぜ新しいものを作るか?これは申請の要件ですか、簡略表記ですか? – Nuby
Nuby、私はただ単に「作成」を省略形として使用しています。私はそれが参照される前に作成され保存されていると思います。 –