Под "взятым" я предполагаю, что вы имеете в виду, что заголовок уже существует в базе данных. Я также предполагаю, что у вас есть следующая строка в вашей Post
модели:
validates_uniqueness_of :title
Лично я думаю, что проверка того, занят ли заголовок путем проверки ошибок валидации, будет хрупкой. @post.errors[:title]
вернет что-то вроде ["has already been taken"]
. Но что, если вы решите изменить сообщение об ошибке или интернационализировать свое приложение? Я думаю, вам лучше написать метод для проведения теста:
class Post < ActiveRecord::Base
def title_unique?
Post.where(:title => self.title).count == 0
end
end
Затем вы можете проверить, является ли заголовок уникальным с @post.title_unique?
. Я не удивлюсь, если уже есть Rubygem, который динамически добавляет такой метод в модели ActiveRecord.