のRuby on Railsを使用すると、次のように":has_many"という関連付けは変更できません。私は3つのテーブルで働いている
article.rb
class Article < ActiveRecord::Base
has_many :comments
has_many :comentarios, :through => :comments
end
comment.rb
class Comment < ActiveRecord::Base
belongs_to :article
has_many :comentarios
end
とcomentario.rb
class Comentario < ActiveRecord::Base
belongs_to :article
end
私は 'comentario'を追加しようとしてからこれを返すまでうまく動作しますエラー
ActiveRecord::HasManyThroughCantAssociateThroughHasOneOrManyReflection in ComentariosController#create
Cannot modify association 'Article#comentarios' because the source reflection class 'Comentario' is associated to 'Comment' via :has_many.
は、これは私が新しい「comentario」
comentarios_controller.rb
class ComentariosController < ApplicationController
def new
@comentario = Comentario.new
end
def create
@article = Article.find(params[:article_id])
@comentario = @article.comentarios.create(comentario_params)
redirect_to article_path(@article)
end
private
def comentario_params
params.require(:comentario).permit(:comentador, :comentario)
end
end
出力は私が@article
を呼び出してから@comentario
を作成する行にエラーを返す作成するために使用するコードですRubyのドキュメントでcomentario
をarticle
に関連付けると、:through
を使用しているので、私は単に@article.comentario
のように呼び出すことができます
このエラーの原因は何ですか? またはこの関連付けを他の方法で達成する方法についてご提案がありますか?
これは役に立ちました。これは参考になりました。いくつかの変数名を変更する必要があったのは、レールだけでなく、私にとっても紛らわしいことでした。また、あなたがここでリンクした問題は非常に面倒だった。 –