Я очень плохо знаком с ruby и программированием в целом. На этапе копирования, вставки и молитвы, как мне нравится это называть. Я пытаюсь ограничить доступ редактора постов и комментариев к создателю, но когда я создаю пост, user_id не заполняется в базе данных.
Заранее спасибо за помощь.
маршруты
map.resources :user_sessions
map.resources :users
map.resources :questions, :has_one => :user, :has_many => :answers
map.login "login", :controller => "user_sessions", :action => "new"
map.logout "logout", :controller => "user_sessions", :action => "destroy"
пользовательская модель
class User < ActiveRecord::Base
acts_as_authentic
has_many :questions
has_many :answers
end
модель вопроса
class Question < ActiveRecord::Base
validates_presence_of :question, :tag
validates_length_of :question, :minimum => 5
validates_length_of :tag, :minimum =>4
belongs_to :user
has_many :answers
end
модель ответа
class Answer < ActiveRecord::Base
belongs_to :question
belongs_to :user
end
enter code here
контроллер вопросов
class QuestionsController < ApplicationController
before_filter :find_question,
:only => [:show, :edit, :update, :destroy]
# GET /questions
# GET /questions.xml
def index
@questions = Question.all
respond_to do |format|
format.html # index.html.erb
format.xml { render :xml => @questions }
end
end
# GET /questions/1
# GET /questions/1.xml
def show
respond_to do |format|
format.html # show.html.erb
format.xml { render :xml => @question }
end
end
# GET /questions/new
# GET /questions/new.xml
def new
#@question = Question.new
@user = Question.new
end
# GET /questions/1/edit
def edit
end
# POST /questions
# POST /questions.xml
def create
@question = Question.new(params[:question])
#@question = Question.user.new(params[:question])
if @question.save
flash[:notice] = 'Question was successfully created.'
redirect_to(@question)
else
render :action => "new"
end
end
end
# PUT /questions/1
# PUT /questions/1.xml
def update
if @question.update_attributes(params[:question])
flash[:notice] = 'Question was successfully updated.'
redirect_to(@question)
else
render :action => "edit"
end
end
# DELETE /questions/1
# DELETE /questions/1.xml
def destroy
@question.destroy
redirect_to(questions_url)
end
private
def find_question
@question = Question.find(params[:id])
end
контроллер ответа
class AnswersController < ApplicationController
def index
@question = Question.find(params[:question_id])
@answer = @question.answers
end
def show
@question = Question.find(params[:question_id])
@answer = @question.answers.find(params[:id])
end
def new
@question = Question.find(params[:question_id])
#@question = Question
@answer = @question.answers.build
#@answer = Answer.new
#redirect_to questions_url(@answer.question_id)
end
def create
#@question = Question.find(params[:question_id])
# @question = Question
@answer = Answer.new(params[:answer])
if @answer.save
redirect_to question_url(@answer.question_id)
else
render :action => "new"
end
end
def edit
@question = Question.find(params[:question_id])
@answer = @question.answers.find(params[:id])
end
def update
@question = Question.find(params[:question_id])
@answer = Answer.find(params[:id])
if @answer.update_attributes(params[:answer])
redirect_to question_answer_url(@question, @answer)
else
render :action => "edit"
end
end
def destroy
@question = Question.find(params[:question_id])
@answer = Answer.find(params[:id])
@answer.destroy
respond_to do |format|
format.html {redirect_to @question}
format.xml {head :ok}
end
end
end