Kommentar zu Benutzer-und Post-Modelle (Ruby on Rails)

Bin ich neu auf die Schienen. Ich Baue meine erste app - einfache blog. Ich habe Benutzer-und Post-Modelle, bei denen jeder Benutzer kann schreiben viele Beiträge. Jetzt möchte ich hinzufügen, Kommentar, Modell, wo jeder posten kann, haben viele Kommentare, und auch jeder Benutzer kann kommentieren, alle post, die durch andere Benutzer.

Im Kommentar-Modell habe ich

id \ body \ user_id \ post_id

Spalten.

Modell Verbände:

Benutzer.rb

has_many :posts,    dependent: :destroy
has_many :comments

post.rb

has_many :comments, dependent: :destroy
belongs_to :user

Kommentar.rb

belongs_to :user
belongs_to :post

Also wie kann ich richtig definieren, erstellen Aktion in CommentsController?
Danke.

UPDATE:

Routen.rb

resources :posts do
  resources :comments
end

comments_controller.rb

  def create
    @post = Post.find(params[:post_id])
    @comment = @post.comments.create(comment_params)
    if @comment.save
      redirect_to @post
    else
      flash.now[:danger] = "error"
    end
  end

Das Ergebnis ist

--- !ruby/hash:ActionController::Parameters
utf8: 
authenticity_token: rDjSn1FW3lSBlx9o/pf4yoxlg3s74SziayHdi3WAwMs=
comment: !ruby/hash:ActionController::Parameters
  body: test
action: create
controller: comments
post_id: '57'

Wie wir sehen können, es nicht zu senden, user_id und funktioniert nur, wenn ich löschen validates :user_id, presence: true string aus Kommentar.rb

Irgendwelche Vorschläge?

  • So starten Sie mit, die Sie nicht wirklich brauchen, zu assoziieren Kommentare zu user direkt. Sie können zu verknüpfen, um Benutzer indirekt, durch die Beiträge. Dann, ein Kommentar ist gebunden an eine @post... Also @post.Kommentare.erstellen(comment_params)...
  • So wie definiere ich @post? Ich habe versucht, smth like this @post = Post.find(params[:id]) @comment = @post.comments.create(comment_params) aber bekam die Fehlermeldung "Konnte nicht Posten, ohne ID"
  • Lesen Sie ein wenig über routing und verschachtelte Ressourcen. Tun, spielen (da Sie das lernen sind) und wieder hierher kommen, wenn Sie nicht können es selbst tun.
InformationsquelleAutor Alexander | 2014-06-28
Schreibe einen Kommentar