Hi,
I am having a really tough time figuring this out. I followed the
tutorial below to add a RESTful authentication to a Ruby application
that tracks projects (just a title and a url). The tutorial is for a
blog, but I just changed blog to projects
http://ruby.about.com/od/rubyonrails/ss/railsblog3.htm
My main table of projects is:
projects
ID: integer
Title: string
Url: string
The RESTful Authentication plugin adds:
user
ID: integer
login: varchar
password:varchar
…
and a sessions controller.
I would like the application to show the user a list of the projects
that belong to them when they go do the projects index action. However,
I have no idea how to link the user ID to a particular project and then
list their projects based on whether they are the appropriatly logged in
user.
I figure that when a new project is created, the create method could add
the user ID to the project in another column. And then, when the
list/show action is called for the projects, only the appropriate
projects will show.
Here is the projects controller. Can anyone help me with this? I’m in
over my head. Thanks, Vince.
class ProjectsController < ApplicationController
before_filter :login_required
GET /projects
GET /projects.xml
def index
@projects = Project.find(:all)
respond_to do |format|
format.html # index.html.erb
format.xml { render :xml => @projects }
end
end
GET /projects/1
GET /projects/1.xml
def show
@project = Project.find(params[:id])
respond_to do |format|
format.html # show.html.erb
format.xml { render :xml => @project }
end
end
GET /projects/new
GET /projects/new.xml
def new
@project = Project.new
respond_to do |format|
format.html # new.html.erb
format.xml { render :xml => @project }
end
end
GET /projects/1/edit
def edit
@project = Project.find(params[:id])
end
POST /projects
POST /projects.xml
def create
@project = Project.new(params[:project])
#@project.clientID = @session[‘user’].id
respond_to do |format|
if @project.save
flash[:notice] = 'Project was successfully created.'
format.html { redirect_to(@project) }
format.xml { render :xml => @project, :status => :created,
:location => @project }
else
format.html { render :action => “new” }
format.xml { render :xml => @project.errors, :status =>
:unprocessable_entity }
end
end
end
PUT /projects/1
PUT /projects/1.xml
def update
@project = Project.find(params[:id])
respond_to do |format|
if @project.update_attributes(params[:project])
flash[:notice] = 'Project was successfully updated.'
format.html { redirect_to(@project) }
format.xml { head :ok }
else
format.html { render :action => "edit" }
format.xml { render :xml => @project.errors, :status =>
:unprocessable_entity }
end
end
end
DELETE /projects/1
DELETE /projects/1.xml
def destroy
@project = Project.find(params[:id])
@project.destroy
respond_to do |format|
format.html { redirect_to(projects_url) }
format.xml { head :ok }
end
end
end