Problema con accept_nested_attributes_for en la validación de una clave externa

Estoy usando Ruby on Rails v3.2.2. Me gustaría resolver el problema relacionado con la validación de una clave externa al usaraccepts_nested_attributes_for yvalidates_associated Métodos de RoR. Es decir, tengo las siguientes clases de modelos:

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

... y tengo las siguientes acciones del controlador:

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

Con el código anterior ("inspirado" por elFormulario de modelo anidado Parte 1 Rieles Fundidos)Mi intención es almacenar asociaciones de categorías al crear un artículo. (Nota: los objetos de categoría ya están presentes en la base de datos; En mi caso, me gustaría almacenar y crear asociaciones de categorías). Sin embargo, cuando envío el formulario relacionado desde el archivo de vista relacionado, obtengo el siguiente error (estoy registrando mensajes de error):

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

¿Por qué sucede desdevalidates_associated parece para ejecutar el métodoarticle.category_association.valid? pero solo si elarticle.category_association.article_id esno nil? ¿Cómo puedo resolver el problema con la validación de presencia de laarticle_id ¿clave externa?

Sin embargo, si comento elvalidates :article_id, :presence => true en elCategoryAssociation clase modelo, funciona como se espera peroParece serno un enfoque correcto para hacerno validar claves foráneas.

Si comento elvalidates_associated :category_associations en elArticle modelo de clase, todavía me sale el error:

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

Respuestas a la pregunta(3)

Su respuesta a la pregunta