次のコードを見てください (Rails 3.0.10):
User < AR
has_many :providers
Provider < AR
belongs_to :user
validates_presence_of :user
user = User.new
user.providers.build
# so both models not yet saved but associated with each other
user.valid?
=> false
user.errors
=> {:providers=>["is invalid"]}
user.providers.first.errors
=> {:user_id=>["can't be blank"]}
まだ保存されていない関連付けられたユーザー モデルが利用可能であることをプロバイダーが認識できないのはなぜですか? または言い換えれば、検証がまだ存在するようにするにはどうすればよいですか?それとも、私は何か間違ったことをしていますか?
私はクリーンなソリューションを探していることに注意してください。そのため、ユーザーモデルをデータベースに保存するプロバイダーモデルで検証前のコールバックを提案することはできません。