0

Я только что создал новые столбцы в своей базе данных для моей таблицы микропотоков, и эти столбцы были vote_countcomment_count, и я хочу связать его с моделями голосования голосов и комментариями комментариев моделей комментариев. Поскольку я просто добавил эти столбцы, хотя были голоса и комментарии, как подключить эти другие модели к модели micropost, чтобы заполнить новые столбцы. Любые предложения очень ценятся!Рельсы: подключение модели к другой модели

Micropost Модель

class Micropost < ActiveRecord::Base 
    attr_accessible :title, :content, :view_count 
    acts_as_voteable 
    belongs_to :school 
    belongs_to :user 
    has_many :comments 
    has_many :views 
    accepts_nested_attributes_for :comments 
end 

ответ

1

Похоже, что вы пытаетесь сделать, это использовать counter_cache, что рельсы опоры, но у вас есть имена столбцов неправильно.

Вы хотите добавить в свою базу данных comments_count и столбец votes_count вместо тех, которые у вас есть.

Затем вы можете подключить его к моделям следующим образом:

class Micropost< ActiveRecord::Base 
    attr_accessible :title, :content, :view_count 
    acts_as_voteable 
    belongs_to :school 
    belongs_to :user 
    has_many :comments, :counter_cache => true 
    has_many :views 
    accepts_nested_attributes_for :comments 
end 

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

Здесь больше информации о них: http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html

+0

У меня есть столбец comments_count в таблице mircopost и делает этот столбец просто автоматически подсчитывать количество комментариев, которые micropost есть? Также для голосов, так как я использую act_as_voteable, я предполагаю, что есть еще что-то, а затем просто автоматически подсчитывает? – Kellogs

+1

Хорошо для комментариев, он автоматически увеличит/уменьшит comment_count для вас. Вы всегда можете просто вызвать 'comments_count', чтобы получить текущее количество комментариев для вашей микропотоки. Для act_as_votable, смотрите здесь: https://github.com/ryanto/acts_as_votable в разделе «Кэширование», вам просто нужно добавить некоторые столбцы в базу данных по мере их определения, и она будет делать то, что вы хотите. – TheDelChop

+0

mmm У меня уже есть комментарии, прежде чем я добавил этот столбец, есть ли способ обновить его и сохранить в этом столбце? Также для процесса голосования вы знаете, как это сделать? – Kellogs

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