activerecord - убедитесь, что принадлежащий_ указывает на действительную запись при сохранении - PullRequest
1 голос
/ 13 апреля 2011

При сохранении записи с принадлежностью можно ли гарантировать, что внешний ключ, сохраняемый в дочерней записи, действительно существует в родительской таблице?(Предполагая, что это не полиморфно).

Я знаю, что есть плагины, которые могут сделать это, но мне интересно, есть ли у ar средства для обработки этого.

Спасибо!

Ответы [ 2 ]

1 голос
/ 13 апреля 2011

Вы можете сделать это вручную с обработчиками before_save и before_create.Это не обязательно лучший способ, но вы не должны бояться закатывать рукава и выполнять работу вручную, когда это необходимо.

И, поскольку вы разумны (параноик АКА), вы можетепоместите реальное ограничение внешнего ключа в вашу базу данных;FK внутри вашей базы данных также защитит от повреждения, вызванного удалением вещей, на которые ссылаются другие вещи.Недостатком является то, что ActiveRecord на самом деле не поддерживает FK в базе данных, поэтому вам придется добавлять и поддерживать их вручную с помощью RAW SQL.

1 голос
/ 13 апреля 2011

попробуй validates_presence_of

class Model2 < ActiveRecord::Base
  belongs_to :model1

  validates_presence_of :model1
end
...