2

親オブジェクトの存在を検証し、親オブジェクトの有効性を検証するオブジェクトを作成したいと思います。ただし、親オブジェクトとは別に作成したいのですが、その方法がわかりません。

これは私のコードです:

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

これは不必要に面倒です - もっと良い方法はありますか?

4

2 に答える 2

3

validates_the_presence_of :user_idの代わりに質問モデルで使用する必要がありvalidates_presence_of :userます。

お役に立てば幸いです。

于 2011-01-31T18:17:46.260 に答える
0

フォームからオブジェクトを作成しますか? その場合は、build メソッドと accept_nested_attributes を使用することをお勧めします。これにより、親オブジェクトと子オブジェクトの両方を同時に作成できます。これを行いたいときは、通常、Ryan の投稿を参照します。

于 2011-01-27T09:52:21.853 に答える