belongs_to objets dans des rails
-
30-09-2019 - |
Question
Salut, je suis en train de construire une petite application de forum avec des rails (3). Je suis assez nouveau dans les rails la matière et je me suis coincé avec les sujets.
J'ai 2 modèles (sujet et topic_reply)
modèle sujet:
class Topic < ActiveRecord::Base
belongs_to :board
belongs_to :user
has_many :topic_replies, :dependent => :destroy
TOPIC_TYPES = ["Non-support", "Question"]
validates :topic_type, :inclusion => TOPIC_TYPES
end
Modèle sujet de réponse:
class TopicReply < ActiveRecord::Base
belongs_to :topic
belongs_to :user
end
Quand je crée un tout sujet affiche bien sauf pour les topic_replies (tous les postes dans le sujet)
La raison en est. Mon objet topic_reply enregistre tout correctement, sauf qu'il ne enregistrez pas l'topic_id dans l'objet et donc dans ma db
voici une partie de mon contrôleur de sujet pour créer un sujet:
# GET /topics/new
# GET /topics/new.xml
def new
@topic = Topic.new
@topic_reply = @topic.topic_replies.build
respond_to do |format|
format.html # new.html.erb
end
end
# POST /topics
# POST /topics.xml
def create
@topic = Topic.new(params[:topic])
@topic.id_board = @board.id
@topic_reply = @topic.topic_replies.build(params[:topic_reply])
@topic_reply.id_topic = @topic.id
@topic_reply.id_poster = User.first.id
respond_to do |format|
if @topic.save && @topic_reply.save
format.html { redirect_to(topic_path("#{@board.name.parameterize}-#{@board.id}", "#{@topic.title.parameterize}-#{@topic.id}")) }
else
format.html { render :action => "new" }
end
end
end
que quelqu'un a une idée de ce que je fais mal si je trop posté moins d'informations me faire savoir que je vais ajouter ce que vous avez besoin.
Merci à l'avance
La solution
Vos clés étrangères devrait être nommé topic_id
, poster_id
et board_id
comme ceux-ci sont des valeurs par défaut dans Rails. Vous n'êtes pas définir des colonnes non par défaut dans vos modèles, de sorte que le code actuel ne peut pas fonctionner.