У меня есть следующие модели:
class Price < ActiveRecord::Base
belongs_to :article, inverse_of: :prices
validates :article_id, presence: true
end
class Article < ActiveRecord::Base
has_many :prices, dependent: :destroy, inverse_of: :article
end
Код при их создании вызывает ошибку проверки при сохранении (Цены недействительны):
article = Article.new
article.prices.build( { amount: 55.0 } )
article.save! #=> Validation failed: Prices is invalid
Таким образом, Rails недостаточно умен, чтобы сохранить родительский объект (Article) перед дочерними объектами (Prices), поэтому article_id может быть присвоен цене до ее сохранения.
Как вы используете проверки внешнего ключа при использовании функции сборки?
Похоже, это довольно стандартный сценарий, который должен сработать?
(Я знаю, что вы можете использовать ограничения на уровне базы данных, но я спрашиваю здесь о проверках на уровне приложения)
has_many
, и это точно то, что задавал вопрос, на который я ссылался. - person Marcelo De Polli   schedule 13.09.2013