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
23 changes: 23 additions & 0 deletions app/controllers/memos_controller.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
class MemosController < ApplicationController
def new
@book = Book.find(params[:book_id])
@memo = @book.memos.new
end

def create
@book = Book.find(params[:book_id])
@memo = @book.memos.new(params[:memo])
if @memo.save
redirect_to book_path(@book), :notice => "added memo"
else
render :new
end
end

def destroy
@book = Book.find(params[:book_id])
@memo = @book.memos.find(params[:id])
@memo.destroy
redirect_to book_path(@book)
end
end
1 change: 1 addition & 0 deletions app/models/book.rb
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
# encoding: UTF-8
class Book < ActiveRecord::Base
has_many :memos , :dependent => :destroy
attr_accessible :memo, :purchased_on, :title
validates :title, :presence => true

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, :text
validates_length_of :text , :maximum => 100
end
12 changes: 9 additions & 3 deletions app/views/books/show.html.erb
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,20 @@

<p>
<b>Memo:</b>
<%= @book.memo %>
<div><%= @book.memo %></div>
<% @book.memos.each do |m| %>
<div>
<%= m.text %> |
<%= link_to "delete", book_memo_path(:book_id => @book.id, :id => m.id), :confirm => "OK?", :method => :delete %>
</div>
<% end %>
</p>

<p>
<b>Purchased on:</b>
<%= @book.purchased_on %>
</p>


<%= link_to 'Edit', edit_book_path(@book) %> |
<%= link_to 'Back', books_path %>
<%= link_to 'Back', books_path %> |
<%= link_to 'add memo', new_book_memo_path(@book) %>
5 changes: 5 additions & 0 deletions app/views/memos/new.html.erb
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
<div>title <%= @book.title %></div>
<%= form_for @memo, :url => book_memos_path do |f| %>
memo <%= f.text_field :text %>
<%= 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/20120615023422_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
t.text :text

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 => 20120615023422) 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"
t.text "text"
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
end

end
8 changes: 8 additions & 0 deletions spec/factories/memos.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
# Read about factories at https://github.com/thoughtbot/factory_girl

FactoryGirl.define do
factory :memo do
book_id 1
text "MyText"
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 @@
require 'spec_helper'

describe Memo do
describe "validate" do
context "in limit" do
text = "a" * 100
subject { Memo.new(:text => text).valid? }
it { should be_true }
end
context "limit over" do
text = "a" * (100+1)
subject { Memo.new(:text => text).valid? }
it { should be_false }
end
end
end
36 changes: 36 additions & 0 deletions spec/requests/books_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -37,4 +37,40 @@
end
end
end

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

before { visit "/books/#{book.id}/memos/new" }
context "post memo" do
before do
fill_in "memo_text" , with: "test1"
click_on "Create Memo"
end

it "transit page" do
current_path.should == book_path(book)
end

it "さっきのとうこうあること" do
should have_content("test1")
end
end

context "role2" do
before do
fill_in "memo_text", with: "test2"
click_on "Create Memo"
end

it "transit page" do
current_path.should == book_path(book)
end

it "さっきのとうこうあること" do
should have_content("test2")
end
end
end
end