2014-11-29 6 views
0

У меня есть проект рельсов, и я недавно решил добавить blog_id в таблицу комментариев, чтобы вы могли вытащить все комментарии, относящиеся к определенному блогу. Проблема, с которой я столкнулась, - это то, что я делаю для комментариев уже в базе данных? Могу ли я просто сделать:Могу ли я просто сохранить записи в базе данных?

Comment.find_each(&:save) 

Я думаю, не потому, что он не знает, какой блог он изначально принадлежал - даже если отношения были обновлены, чтобы сказать: блоги имеет много комментариев и замечаний принадлежит блог

Основываясь на этом отношении, могу ли я просто выполнить вышеуказанный код в грабли?

+0

У вас нет возможности угадать, к какому блогу относятся каждый комментарий, не так ли? Есть ли какой-либо базовый фильтр, который сделает набор комментариев соответствующим конкретному блогу? –

+0

Я бы не спросил, знаю ли я. Поэтому я предполагаю, что нет. – SeekingTruth

+0

Я боялся ... Ваши существующие комментарии не могут быть обработаны иначе, но отредактированы один за другим. Если вы хотите, чтобы они соответствовали блогам, вам нужно, чтобы блог был назначен вручную. –

ответ

1
Comment.all.each do |comment| 
    comment.blog = comment.post.blog 
    comment.save 
end 

Но все это не обязательно. Вы могли бы иметь комментарии, назначенные на блог без blog_id, просто следующим:

blog.rb

has_many :posts 
has_many :comments, through: :posts 

post.rb

belongs_to :blog 
has_many :comments 

comment.rb

belongs_to :post 

def blog 
    post.blog 
end 

Таким образом, у вас будет (за каждый случай):

@blog.posts 
@blog.comments 

@post.comments 
@post.blog 

@comment.post 
@comment.blog 
Смежные вопросы