Я пытаюсь создать комментарий, который может комментировать другие комментарии, но все они получены из одного поста.
Что меня особенно беспокоит, так это попытаться выяснить, как сделать так, чтобы все это могло быть достигнуто на пост-шоу, а не на его редактировании или новом. Разве это разумно с точки зрения архитектуры?
Таким образом, я могу получить к нему доступ через Post.comments
, или Comment.comments
и т. Д., Или Comments.parent
Мои модели:
#comment.rb
belongs_to :post
belongs_to :parent, :class_name => 'Comment'
has_many :children, :class_name => 'Comment'
validates_presence_of :text
#post.rb
has_many :comments
accepts_nested_attributes_for :comments
posts_controller
def show
@post = Post.find(params[:id])
respond_to do |format|
format.html # show.html.erb
format.xml { render :xml => @post }
end
end
routes.rb
resource :comments
Я добавил в таблицу комментариев атрибуты :text
и :post_id
. Хотя я не думаю, что это нужно :post_id
,
Как должна выглядеть моя форма, где она должна быть?
Вот моя ужасная попытка:
- form_for @post do |f|
- f.fields_for :comments do |c|
= f.label 'Comments'
= f.text_area :text
= f.submit 'Submit'
Но, похоже, в этом нет необходимости.