2015-06-13 2 views
0

Я использую драгоценный камень под названием acts_as_commentableДобавить проверку в acts_as_commentable жемчужины

я добавил пользовательский столбец в миграции, как: recipient_id

Тогда я вызвал Комментарий модели согласно документации:

rails g comment

Теперь в моем Comment.rb, у меня есть следующая строка:

validate :comment, :recipient_id, :presence => true 

Примечание: comment столбец уже добавлен сам драгоценный камень

Тем не менее, после следующей документации, когда я огонь следующий намеренно:

commentable = Post.create(:title => ......) 
comment = commentable.comments.create 
comment.comment = "Some comment" 
comment.recipient_id = nil 
comment.save! 

Комментарий объект походит:

<Comment id: 1, comment: "Some comment", commentable_id: 1, commentable_type: "Post", recipient_id: nil, created_at: "2015-06-13 09:41:23", updated_at: "2015-06-13 09:41:23"> 

Почему это не подтверждает наличие recipient_id?

ответ

1

Вы звоните validate вместо validates. Они оба разные.

Оно должно быть:

validates :comment, :recipient_id, :presence => true 
+0

Спасибо, я предполагаю, что я задал тупой вопрос когда-либо. Но, я думаю, в этом случае я не могу добавить никаких валидаций, потому что, как предполагает документ, он создает пустой объект комментария и затем присваивает значения, которые будут ограничены проверкой. Не знаете, как это подтвердить? – Abhi

+0

Проверки выполняются до сохранения записи. Неважно, являетесь ли вы массовым назначением значений или создаете пустой объект, а затем присваиваете значения. Он должен работать в вашем случае. –

+0

Создание пустого объекта здесь невозможно, так как проверка не позволит 'recipient_id' быть нуль в первую очередь – Abhi