2009-09-24 3 views
1

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

У меня есть логическое значение для изображений, в которых говорится, является ли оно признанным или нет. Как я могу проверить при создании новых записей и редактировании, что есть не более определенного количества избранных фотографий? Я бы хотел, чтобы он выдал ошибку, если я уже сказал, 10 фотографий отмечены флажком, и пользователь пытается добавить еще один флаг. Спасибо

ответ

3

Только тонкая реакция на ответ Келли. Название named_scope сделает его немного чище.

class Photo < ActiveRecord::Base 

named_scope :featured, :conditions => { :featured => true } 

validate :user_flaggings 

def user_flaggings 
    errors.add_to_base("type your error msg") if Photo.featured.count > 10 && self.featured_changed? 
end 

end 

Featured_changed? убедитесь, что пользователь пытается использовать это изображение, и это еще не признак.

+0

+1 как я полностью забыл о признаках! – khelll

+0

В этом есть ошибка, в которой я не могу создавать новые избранные фотографии, если у меня уже есть 10 признанных. Мне нужен чек, чтобы увидеть, не добавлен ли тот, который мы добавляем. Я думаю, –

+0

Я думаю, что это нормально, как '&& self.featured_changed?' должно быть это на самом деле – khelll

1
class Photo < ActiveRecord::Base 

    validate :user_flaggings 

    def user_flaggings 
    errors.add_to_base("type your error msg") if user.photos.count > 10 
    end 

end 

Подробнее о пользовательских проверках here.

Смежные вопросы