From 8fa9ac963d60ac4e8fbd11b8de3ce18ee56ca802 Mon Sep 17 00:00:00 2001 From: Junv Date: Wed, 23 Jan 2013 20:47:27 +0800 Subject: [PATCH] add code climate --- README.md | 2 +- app/controllers/book_controller.rb | 4 ++-- app/controllers/user_controller.rb | 4 ++-- app/models/book.rb | 28 ++++++++++++++++++++-------- app/models/borrow_record.rb | 6 +++--- app/models/user.rb | 18 +++++++++++------- db/schema.rb | 16 ++++++++++++---- 7 files changed, 51 insertions(+), 27 deletions(-) diff --git a/README.md b/README.md index fa43093..80ec22c 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ tw-libr Build Status ==== [![Build Status](https://travis-ci.org/wahyd4/Libr.png?branch=master)](https://travis-ci.org/wahyd4/Libr) - +[![Code Climate](https://codeclimate.com/badge.png)](https://codeclimate.com/github/wahyd4/Libr) #### Export System variable export CLIENT_ID='0858f96ac849895e190aec4058dc9c1a' diff --git a/app/controllers/book_controller.rb b/app/controllers/book_controller.rb index ab8ed52..4769493 100644 --- a/app/controllers/book_controller.rb +++ b/app/controllers/book_controller.rb @@ -4,9 +4,9 @@ class BookController < ApplicationController def view @book = Book.find_by_id params[:id] - @can_borrow = @book.users.count > @book.current_borrowers.count + @can_borrow = @book.book_instances.count > @book.current_borrowers.count @records =BorrowRecord.records_of @book - @borrowers = @book.borrowers.uniq + @borrowers = @book.total_borrowers.uniq @owners = @book.users.uniq end diff --git a/app/controllers/user_controller.rb b/app/controllers/user_controller.rb index f99bd67..363dfac 100644 --- a/app/controllers/user_controller.rb +++ b/app/controllers/user_controller.rb @@ -27,14 +27,14 @@ class UserController < ApplicationController when 'wanted' @books = nil else - @books = @user.books.order 'id DESC' + @books = @user.books end @query = query render :books end def return_book - records = BorrowRecord.where(user_id: params[:id],book_id: params[:book_id],return_date: nil) + records = BorrowRecord.where(user_id: params[:id],book_instance_id: params[:book_id],return_date: nil) unless records.empty? records[0].return_book @message = 'Return book success.' diff --git a/app/models/book.rb b/app/models/book.rb index b11a34f..8a31b74 100644 --- a/app/models/book.rb +++ b/app/models/book.rb @@ -1,14 +1,26 @@ class Book < ActiveRecord::Base - attr_accessible :author, :image, :isbn, :name, :users ,:id + attr_accessible :author, :image, :isbn, :name ,:id - has_many :user_to_books - has_many :users, through: :user_to_books - - has_many :borrow_records - has_many :borrowers,:source => :user, through: :borrow_records + has_many :book_instances + has_many :users, through: :book_instances def current_borrowers - records = borrow_records.where(return_date: nil) - records.map {|record| User.find_by_id record.user_id } + borrowers = [] + book_instances.each{|instance| + if instance.borrowed? + borrowers << instance.current_borrower + end + } + borrowers end + + def total_borrowers + borrowers = [] + book_instances.map{|instance| + unless instance.borrowers.empty? + borrowers << instance.borrowers + end + } + end + end diff --git a/app/models/borrow_record.rb b/app/models/borrow_record.rb index 658880d..e5d6c95 100644 --- a/app/models/borrow_record.rb +++ b/app/models/borrow_record.rb @@ -1,13 +1,13 @@ class BorrowRecord < ActiveRecord::Base - attr_accessible :borrow_date, :return_date, :user_id, :book_id + attr_accessible :borrow_date, :return_date, :user_id, :book_instance_id belongs_to :user - belongs_to :book + belongs_to :book_instance delegate :name, :avatar, to: :user,prefix: true def self.records_of(book) - records = BorrowRecord.includes(:user).where("book_id = ?", book.id).where(return_date:nil) + records = BorrowRecord.includes(:user).where("book_instance_id = ?", book.id).where(return_date:nil) end #def self.create_record(user_id,book_id) diff --git a/app/models/user.rb b/app/models/user.rb index 44c0cb6..425fecc 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -1,28 +1,32 @@ class User < ActiveRecord::Base - attr_accessible :email, :name, :books, :avatar, :id + attr_accessible :email, :name, :avatar, :id validates_uniqueness_of :name - has_many :user_to_books - has_many :books, through: :user_to_books + has_many :book_instances has_many :borrow_records - has_many :borrowed_books ,:class_name => 'Book',:source => :book, through: :borrow_records + + has_many :borrowed_books ,:source => :book_instance, through: :borrow_records - def self.create_user(name,avatar) + def self.create_user(name,avatar) User.create name: name, avatar: avatar end def borrow(book) - record = BorrowRecord.create user_id: self.id, book_id: book.id, borrow_date: DateTime.now + record = BorrowRecord.create user_id: self.id, book_instance_id: book.id, borrow_date: DateTime.now self.borrow_records << record end def borrowed_and_not_returned_books records = borrow_records.where(return_date: nil).order('id DESC') - records.map{ |record| record = Book.find_by_id record.book_id } + records.map{ |record| record = Book.find_by_id record.book_instance_id } end + + def books + book_instances.order('id DESC').map{|instance| Book.find_by_id instance.book_id } + end end diff --git a/db/schema.rb b/db/schema.rb index b0bed58..2714f89 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -11,7 +11,15 @@ # # It's strongly recommended to check this file into your version control system. -ActiveRecord::Schema.define(:version => 20130110095134) do +ActiveRecord::Schema.define(:version => 20130123084128) do + + create_table "book_instances", :force => true do |t| + t.integer "user_id" + t.integer "book_id" + t.boolean "public", :default => true + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + end create_table "books", :force => true do |t| t.string "name" @@ -25,9 +33,9 @@ ActiveRecord::Schema.define(:version => 20130110095134) do create_table "borrow_records", :force => true do |t| t.date "borrow_date" t.date "return_date" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false - t.integer "book_id" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + t.integer "book_instance_id" t.integer "user_id" end