2015-09-02 4 views
1

мне нужно добавить данные в переменнуюдобавить данные к рельсам массива 4

@celebrity = Celebrity.includes(:category).where('category_id = ?', params[:id]) 
test =[] 
@celebrity.each do |celeb| 
    @vote = Vote.where('celebrity_id = ?', celeb).count 
    test << {vote_count:@vote} 
end 

, когда я отладки «тест»,

abort test.inspect 

Я получаю результат

[{:vote_count=>2}, {:vote_count=>1}, {:vote_count=>0}] 

, но мой вопрос, как я могу добавить vote_count к @celebrity, может кто-нибудь, пожалуйста, помогите мне

+1

Пожалуйста, поделитесь ожидаемым результатом. –

+0

2>] Это то, что я ожидал – Saravana

ответ

0
@celebrity.each do |celeb| 
    celeb["vote_count"] = celeb.votes.count 
end 

+ apneadiving прав. use counter_caches

+0

, но у меня нет „vote_count“ атрибут – Saravana

+1

вау ... просто сделать это и Ты отлично HTTP: //yerb.net/blog/2014/03/13/three-easy-steps-to-using-counter-caches-in-rails/ –

+0

после добавления атрибута "vote_count" в мою таблицу, зафиксированный, но в действии для голосования I не может иметь возможность голосовать за знаменитость, получаю эту ошибку 'отсутствует атрибут: votes_count'.My код: ' знаменитости = Celebrity.find (PARAMS [: идентификатор]) голос = Vote.build (celebrity_id: celebrity.id, : id => params [: vote]) reply_to do | формат | если vote.save format.html {redirect_to ranking_url} format.json {визуализации: голос JSON, статус:: создано} еще format.html {оказывают действие: 'новый'} format.json {делают JSON: vote.errors, status :: unprocessable_entity} конец конец ' – Saravana

2

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

Если настроить counter_cache правильно (see ref), нужно иметь данные сразу в ваших экземпляров модели, как ожидается,

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