У меня есть предложение и модель исправления с отношениями has_one и own_to соответственно.
По какой-то причине, когда я делаю
def create
@sentence = Sentence.find(params[:sentence_id])
@correction = @sentence.build_correction(params[:correction])
пользовательская проверка, которую я написал для исправления, вызывается в точке build_correction. проверка ниже
class Correction < ActiveRecord::Base
attr_accessible :text, :sentence_id, :user_id
belongs_to :sentence
belongs_to :user
validate :correction_is_different_than_sentence
def correction_is_different_than_sentence
errors.add(:text, "can't be the same as the original sentence.") if (text == self.sentence.text)
end
проблема по какой-то причине при проверке корректирующего объекта не имеет установленного идентификатора предложения (несмотря на то, что я использовал метод build_correction), и поэтому он жалуется
"у вас есть объект nil .... при выполнении nil.text" в предложении if в приведенной выше проверке.
Так что мой вопрос - почему происходит проверка команды сборки, я думал, что она запускается только при создании или обновлении. И почему не задано предложение: