Problem z accepts_nested_attributes_for podczas sprawdzania klucza obcego

Używam Ruby on Rails w wersji 3.2.2. Chciałbym rozwiązać problem związany z walidacją klucza obcego podczas używaniaaccepts_nested_attributes_for ivalidates_associated Metody RoR. Oznacza to, że mam następujące klasy modeli:

class Article < ActiveRecord::Base
  has_many :category_associations, :foreign_key => 'category_id'

  accepts_nested_attributes_for :category_associations, :reject_if => lambda { |attributes| attributes[:category_id].blank? }
  validates_associated :category_associations
end

class CategoryAssociation < ActiveRecord::Base
  belongs_to :article, :foreign_key => 'article_id'
  belongs_to :category, :foreign_key => 'category_id'

  validates :article_id, :presence => true
  validates :category_id, :presence => true
end

... i mam następujące działania kontrolera:

class ArticlesController < ApplicationController
  def new
    @article = Article.new
    5.times { @article.category_associations.build }

    # ...
  end

 def create
   @article = Article.new(params[:article])

   if @article.save
     # ...
   else
     # ...
   end
 end
end

Z powyższym kodem („zainspirowany” przezZagnieżdżona forma modelu Część 1 Rails Cast)moim zamiarem jest przechowywanie skojarzeń kategorii podczas tworzenia artykułu (Uwaga: obiekty kategorii są już obecne w bazie danych; w moim przypadku chciałbym po prostu przechowywać i tworzyć powiązania kategorii). Jednak po przesłaniu powiązanego formularza z powiązanego pliku widoku pojawia się następujący błąd (rejestruję komunikaty o błędach):

{:"category_associations.article_id"=>["can't be blank"], :category_associations=>["is invalid"]}

Dlaczego tak się dzieje od tego czasuvalidates_associated wydaje się uruchomić metodęarticle.category_association.valid? ale tylko jeśliarticle.category_association.article_id jestnie nil? Jak mogę rozwiązać problem dzięki walidacji obecnościarticle_id klucz obcy?

Jeśli jednak skomentujęvalidates :article_id, :presence => true wCategoryAssociation klasa modelu, działa zgodnie z oczekiwaniami, alewygląda na tonie właściwe podejście do tegonie sprawdzaj klucze obce.

Jeśli komentujęvalidates_associated :category_associations wArticle klasa modelu, nadal pojawia się błąd:

{:"category_associations.article_id"=>["can't be blank"]}

questionAnswers(3)

yourAnswerToTheQuestion