Я делаю Instagram-подобный клон, где пользователи загружают фотографии, на которые проголосовали.Использование пользовательских методов в области/рефакторинг настраиваемых методов
Как я могу реорганизовать этот код? Как я могу по умолчанию использовать его, уменьшая процент?
class Picture < ActiveRecord::Base
mount_uploader :picture, PictureUploader
has_and_belongs_to_many :tags
has_many :votes, :dependent => :destroy
def vote_count
return self.votes.count
end
def up_votes
return self.votes.where('up like ?', true).count.to_f
end
def down_votes
return self.votes.where('up like ?', false).count.to_f
end
def percent
return self.up_votes/self.vote_count
end
end
FYI моя Голосуйте модель просто отслеживает изображение и идентификатор пользователя и имеет до: логическое значение,: по умолчанию => ложный
Все это кажется менее кратким, чем это может быть, как бы вы написать это лучше?
ОК спасибо. Как насчет сферы? –
Вы можете перемещать эти методы в области, подобной этой: scope: votes_status, lambda {| status = false | self.votes.where ('up like?', Status) .count.to_f } – Thorin