Skip to content

Commit

Permalink
Create model Review. #779910
Browse files Browse the repository at this point in the history
  • Loading branch information
jastix committed Jun 28, 2009
1 parent 0b16de2 commit 69d1b28
Show file tree
Hide file tree
Showing 26 changed files with 383 additions and 22 deletions.
2 changes: 1 addition & 1 deletion app/controllers/genres_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ def create

else
wants.html { render :action => 'new' }

wants.js
end
end
end
Expand Down
73 changes: 73 additions & 0 deletions app/controllers/reviews_controller.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
class ReviewsController < ApplicationController
def index
@reviews = Review.all
end

def show
@review = Review.find(params[:id])
end

def new
@review = Review.new(:book_id => params[:book_id])


respond_to do |wants|
wants.html

end

end

def create
params[:review][:user_id] = @current_user.id
@review = Review.new(params[:review])

respond_to do |wants|
if @review.save
wants.html do
flash[:notice] = "Successfully created review."
redirect_to @review
end

else
wants.html { render :action => 'new' }

end
end
end

def edit
@review = Review.find(params[:id])
respond_to do |wants|
wants.html

end

end

def update

@review = Review.find(params[:id])
params[:review][:user_id] = @current_user.id
respond_to do |wants|
if @review.update_attributes(params[:review])
wants.html do
flash[:notice] = "Successfully updated review."
redirect_to @review
end

else
wants.html { render :action => 'edit' }

end
end
end

def destroy
@review = Review.find(params[:id])
@review.destroy
flash[:notice] = "Successfully removed review."
redirect_to reviews_url
end
end

5 changes: 5 additions & 0 deletions app/controllers/users_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -65,9 +65,14 @@ def update

def destroy
@user = User.find(params[:id])
if @user.books.length == 0
@user.destroy
flash[:notice] = "Successfully removed user."
redirect_to users_url
else
flash[:error] = "Cannot remove user."
redirect_to :back
end
end
end

2 changes: 2 additions & 0 deletions app/helpers/reviews_helper.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
module ReviewsHelper
end
1 change: 1 addition & 0 deletions app/models/book.rb
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ class Book < ActiveRecord::Base
has_many :readings , :foreign_key => 'read_id'
has_many :readers, :through => :readings

has_many :reviews
validates_presence_of :title, :published_year, :isbn
validates_uniqueness_of :isbn
validates_numericality_of :published_year, :only_integer => true
Expand Down
9 changes: 9 additions & 0 deletions app/models/review.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
class Review < ActiveRecord::Base

belongs_to :book
belongs_to :user

validates_presence_of :review, :rating, :book_id, :user_id
#attr_accessible :book_id, :review, :rating, :user_id
end

1 change: 1 addition & 0 deletions app/models/user.rb
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ class User < ActiveRecord::Base
has_many :readings , :foreign_key => 'reader_id'
has_many :reads, :through => :readings

has_many :reviews
validates_presence_of :login, :password, :name, :email, :location
validates_uniqueness_of :login
validates_format_of :email, :with => %r{.+@.+\..+},:message => "must be a valid email address"
Expand Down
2 changes: 2 additions & 0 deletions app/views/authors/index.html.erb
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,10 @@
<td><%=h author.country %></td>
<td><%= auto_link (author.website)%></td>
<td><%= link_to "Show", author %></td>
<% if logged_in? %>
<td><%= link_to "Edit", edit_author_path(author) %></td>
<td><%= link_to "Destroy", author, :confirm => 'Are you sure?', :method => :delete %></td>
<% end %>
</tr>
<% end %>
</table>
Expand Down
1 change: 1 addition & 0 deletions app/views/books/show.html.erb
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@
<%= link_to 'I have read it', readings_path(:read_id => @book.id), :method => :post %>
<% end %>
</p>
<p><%= link_to "New Review", new_review_path(:book_id => @book.id) %></p>
<p>

<% if @current_user.id == @book.user.id %>
Expand Down
4 changes: 3 additions & 1 deletion app/views/genres/index.html.erb
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,13 @@
<th>Name</th>
</tr>
<% for genre in @genres %>
<tr>
<tr id="genre">
<td><%=h genre.name %></td>
<td><%= link_to "Show", genre %></td>
<% if logged_in? %>
<td><%= link_to "Edit", edit_genre_path(genre) %></td>
<td><%= link_to "Destroy", genre, :confirm => 'Are you sure?', :method => :delete %></td>
<% end %>
</tr>
<% end %>
</table>
Expand Down
4 changes: 2 additions & 2 deletions app/views/genres/show.html.erb
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
<h2> Genre </h2>

<div id="new">
<p>
<strong>Name:</strong>
<%=h @genre.name %>
</p>

<div>
<p>
<%= link_to "Edit", edit_genre_path(@genre) %> |
<%= link_to "Destroy", @genre, :confirm => 'Are you sure?', :method => :delete %> |
Expand Down
3 changes: 2 additions & 1 deletion app/views/layouts/application.html.erb
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,8 @@
<%= link_to "Main", books_path %> |
<%= link_to "Users", users_path %> |
<%= link_to "Genres", genres_path %> |
<%= link_to "Authors", authors_path %>
<%= link_to "Authors", authors_path %> |
<%= link_to "Reviews", reviews_path %>
</div>
<br /><br />

Expand Down
15 changes: 15 additions & 0 deletions app/views/reviews/_form.html.erb
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
<% form_for @review do |f| %>
<%= f.error_messages %>
<%= f.hidden_field :book_id, :value => @review.book_id%>
<p>
<%= f.label :review %><br />
<%= f.text_area :review %>
</p>

<p>
<%= f.label :rating %><br />
<%= f.text_field :rating %>
</p>
<p><%= f.submit "Submit" %></p>
<% end %>

9 changes: 9 additions & 0 deletions app/views/reviews/edit.html.erb
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
<h2> Edit Review </h2>

<%= render :partial => 'form' %>

<p>
<%= link_to "Show", @review %> |
<%= link_to "View All", reviews_path %>
</p>

26 changes: 26 additions & 0 deletions app/views/reviews/index.html.erb
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
<h2> Reviews </h2>

<table>
<tr>
<th>Book</th>
<th>User</th>
<th>Review</th>
<th>Rating</th>
</tr>
<% for review in @reviews %>
<tr>
<td><%=h review.book.title %></td>
<td><%=h review.user.name %></td>
<td><%=h review.review %></td>
<td><%=h review.rating %></td>
<td><%= link_to "Show", review %></td>
<% if logged_in? %>
<% if @current_user == review.user.id %>
<td><%= link_to "Edit", edit_review_path(review) %></td>
<td><%= link_to "Destroy", review, :confirm => 'Are you sure?', :method => :delete %></td>
<% end %>
<% end %>
</tr>
<% end %>
</table>

6 changes: 6 additions & 0 deletions app/views/reviews/new.html.erb
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
<h2> New Review </h2>

<%= render :partial => 'form' %>

<p><%= link_to "Back to List", reviews_path %></p>

26 changes: 26 additions & 0 deletions app/views/reviews/show.html.erb
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
<h2> Review </h2>


<p>
<strong>Review:</strong>
<%=h @review.review %>
</p>
<p>
<strong>Rating:</strong>
<%=h @review.rating %>
</p>
<p>
<strong>Book:</strong>
<%=h @review.book.title %>
</p>
<p>
<strong>User:</strong>
<%=h @review.user.name %>
</p>
<p>

<%= link_to "Edit", edit_review_path(@review) %> |
<%= link_to "Destroy", @review, :confirm => 'Are you sure?', :method => :delete %> |
<%= link_to "View All", reviews_path %>
</p>

2 changes: 2 additions & 0 deletions config/routes.rb
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
ActionController::Routing::Routes.draw do |map|
map.resources :reviews

map.resources :manuscripts

map.resources :categories
Expand Down
89 changes: 85 additions & 4 deletions db/development_structure.sql
Original file line number Diff line number Diff line change
@@ -1,17 +1,80 @@
CREATE TABLE `authors` (
`id` int(11) NOT NULL auto_increment,
`name` varchar(255) default NULL,
`country` varchar(255) default NULL,
`website` varchar(255) default NULL,
`created_at` datetime default NULL,
`updated_at` datetime default NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;

CREATE TABLE `books` (
`id` int(11) NOT NULL auto_increment,
`user_id` int(11) default NULL,
`title` varchar(255) default NULL,
`author` varchar(255) default NULL,
`published_year` int(11) default NULL,
`genre` varchar(255) default NULL,
`isbn` varchar(255) default NULL,
`description` text,
`created_at` datetime default NULL,
`updated_at` datetime default NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8;

CREATE TABLE `categories` (
`id` int(11) NOT NULL auto_increment,
`book_id` int(11) default NULL,
`genre_id` int(11) default NULL,
`created_at` datetime default NULL,
`updated_at` datetime default NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=20 DEFAULT CHARSET=utf8;

CREATE TABLE `friendships` (
`id` int(11) NOT NULL auto_increment,
`user_id` int(11) default NULL,
`friend_id` int(11) default NULL,
`created_at` datetime default NULL,
`updated_at` datetime default NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE `genres` (
`id` int(11) NOT NULL auto_increment,
`name` varchar(255) default NULL,
`created_at` datetime default NULL,
`updated_at` datetime default NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8;

CREATE TABLE `manuscripts` (
`id` int(11) NOT NULL auto_increment,
`book_id` int(11) default NULL,
`author_id` int(11) default NULL,
`created_at` datetime default NULL,
`updated_at` datetime default NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=14 DEFAULT CHARSET=utf8;

CREATE TABLE `readings` (
`id` int(11) NOT NULL auto_increment,
`reader_id` int(11) default NULL,
`read_id` int(11) default NULL,
`created_at` datetime default NULL,
`updated_at` datetime default NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;

CREATE TABLE `reviews` (
`id` int(11) NOT NULL auto_increment,
`book_id` int(11) default NULL,
`user_id` int(11) default NULL,
`review` text,
`rating` int(11) default NULL,
`created_at` datetime default NULL,
`updated_at` datetime default NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE `schema_migrations` (
`version` varchar(255) NOT NULL,
UNIQUE KEY `unique_schema_migrations` (`version`)
Expand All @@ -38,10 +101,28 @@ CREATE TABLE `users` (
`created_at` datetime default NULL,
`updated_at` datetime default NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;

INSERT INTO schema_migrations (version) VALUES ('20090606030649');

INSERT INTO schema_migrations (version) VALUES ('20090606030931');

INSERT INTO schema_migrations (version) VALUES ('20090612173941');
INSERT INTO schema_migrations (version) VALUES ('20090612173941');

INSERT INTO schema_migrations (version) VALUES ('20090613144126');

INSERT INTO schema_migrations (version) VALUES ('20090614164013');

INSERT INTO schema_migrations (version) VALUES ('20090616094616');

INSERT INTO schema_migrations (version) VALUES ('20090616094935');

INSERT INTO schema_migrations (version) VALUES ('20090616124603');

INSERT INTO schema_migrations (version) VALUES ('20090616133849');

INSERT INTO schema_migrations (version) VALUES ('20090618100543');

INSERT INTO schema_migrations (version) VALUES ('20090618102132');

INSERT INTO schema_migrations (version) VALUES ('20090626110437');
Loading

0 comments on commit 69d1b28

Please sign in to comment.