Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions app/models/book.rb
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
class Book < ActiveRecord::Base
attr_accessible :memo, :purchased_on, :title
validates :title, :presence => true
has_many :memos, :dependent => :destroy

before_create :total_books_count

Expand Down
4 changes: 4 additions & 0 deletions app/models/memo.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
class Memo < ActiveRecord::Base
attr_accessible :book_id, :body
validates_length_of :body, :within => 1..100
end
8 changes: 8 additions & 0 deletions app/views/books/show.html.erb
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,14 @@
<%= @book.purchased_on %>
</p>

<%= link_to 'Add New Comment', new_book_memo_path(@book) %><br/>
<% @book.memos.each do |memo| %>
<b> Comment: </b>
<%= memo.body %>
(<%= link_to "Delete", book_memo_path(:book_id => @book.id, :id => memo.id),
:confirm => "ok?", :method => :delete %>)<br/>
<% end %>
<br/>

<%= link_to 'Edit', edit_book_path(@book) %> |
<%= link_to 'Back', books_path %>
7 changes: 7 additions & 0 deletions app/views/memos/new.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
Title: <%= @book.title %><br/>
<br/>
<%= form_for @memo, :url => book_memos_path do |f| %>
Add new Memo(with in 100 moji):<br/>
<%= f.text_field :body %><br/>
<%= f.submit %>
<% end %>
4 changes: 3 additions & 1 deletion config/routes.rb
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
BookMemo2::Application.routes.draw do
resources :books
resources :books do
resources :memos
end

# The priority is based upon order of creation:
# first created -> highest priority.
Expand Down
10 changes: 10 additions & 0 deletions db/migrate/20120616050801_create_memos.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
class CreateMemos < ActiveRecord::Migration
def change
create_table :memos do |t|
t.integer :book_id, :null =>false
t.text :body

t.timestamps
end
end
end
9 changes: 8 additions & 1 deletion db/schema.rb
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
#
# It's strongly recommended to check this file into your version control system.

ActiveRecord::Schema.define(:version => 20120526050801) do
ActiveRecord::Schema.define(:version => 20120616050801) do

create_table "books", :force => true do |t|
t.string "title"
Expand All @@ -21,4 +21,11 @@
t.datetime "updated_at", :null => false
end

create_table "memos", :force => true do |t|
t.integer "book_id", :null => false
t.text "body"
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
end

end
16 changes: 16 additions & 0 deletions spec/models/memo_spec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
# coding:utf-8
require 'spec_helper'

describe Memo do
context "within 100 moji" do
body = "a"*100
subject {Memo.new(:body => body).valid?}
it { should be_true }
end

context "more than 100 moji" do
body = "a"*101
subject {Memo.new(:body => body).valid?}
it { should be_false }
end
end
30 changes: 30 additions & 0 deletions spec/requests/books_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -37,4 +37,34 @@
end
end
end

describe '/books/:id/memos/new' do
let!(:book){FactoryGirl.create :book }
subject {page }

before { visit "/books/#{book.id}/memos/new" }
let(:memo_body){["hoge1","hoge2"]}

context "add 1memo" do
before do
fill_in "memo[body]", with: memo_body[0]
click_on "Create Memo"
end

it "resist check" do
should have_content(memo_body[0])
end
end

context "add 2memo" do
before do
fill_in "memo[body]", with: memo_body[1]
click_on "Create Memo"
end

it "resist check" do
should have_content(memo_body[1])
end
end
end
end