После еще большего поиска я отказался от поиска учебника и придумал это. Если кто-нибудь может указать лучший / более чистый способ сделать это, пожалуйста, дайте мне знать. В противном случае, вот что я использую сейчас на случай, если это пойдет на пользу кому-либо еще.
Сначала установите плагин с помощью script/plugin install http://github.com/jackdempsey/acts_as_commentable.git -r 2.x
Затем сгенерируйте модель комментария и выполните миграцию с помощью script/generate comment
и перенесите базу данных с помощью rake db:migrate
Хитрый момент - это полимеризация вложенных комментариев под другими ресурсами. Вот что я сделал:
# In config/routes.rb
map.resources :comments, :path_prefix => '/:commentable_type/:commentable_id'
# In app/controllers/comments_controller.rb
before_filter :load_commentable
def create
@comment = @commentable.comments.build(params[:comment])
@comment.user = current_user
respond_to do |format|
if @comment.save
format.html { redirect_to @commentable }
else
format.html { render :action => 'new' }
end
end
end
protected
def load_commentable
@commentable = params[:commentable_type].camelize.constantize.find(params[:commentable_id])
end
# In app/views/comments/_form.html.erb
<%= form_for(:comment, :url => comments_path(commentable.class.to_s.underscore, commentable.id)) do |f| %>
# In app/views/model_that_allows_comments/show.html.erb
<%= render :partial => 'comments/form', :locals => {:commentable => @model_that_allows_comments} %>
Я думаю, что это показывает соответствующие части достаточно ясно, чтобы понять, что происходит. Это позволяет добавить acts_as_commentable
к любой модели. Вам просто нужно передать комментируемый объект в хеш-код localals при визуализации формы комментариев, и тот же код контроллера / представления комментариев должен работать.