принадлежит_те объекты в рельсах
-
30-09-2019 - |
Вопрос
Привет, я в настоящее время строю небольшое приложение форума с рельсами (3). Я довольно новых в рельсах материи, и я застрял с темами.
У меня 2 модели (Topic & Topic_reply)
Тема Модель:
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
Тема Ответить Модель:
class TopicReply < ActiveRecord::Base
belongs_to :topic
belongs_to :user
end
Когда я создаю тему, все отображается нормально, за исключением topic_replies (все сообщения в теме)
Причина в том, что My Topic_Reply Ebject сохраняет все правильно, за исключением того, что он не сохраняет Topic_id в объекте и, следовательно, в моей БД.
Вот часть моего тема контроллера для создания темы:
# 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
У кого-нибудь есть идея, что я делаю не так, если я разместил слишком меньше информации, дайте мне знать, я добавлю то, что вам нужно.
заранее спасибо
Решение
Ваши иностранные ключи должны быть названы topic_id
, poster_id
а также board_id
Поскольку это значения по умолчанию в Rails. Вы не определяете колонны по умолчанию в ваших моделях, поэтому текущий код не может работать.