如何在Ruby on Rails中从一个用户向另一个用户提供追索权?

时间:2016-09-08 09:34:35

标签: ruby-on-rails ruby routes

为了使这个可以理解,我使用简化版本来理解我想要实现的目标。

该平台有10本书(第1,2,3,4,5,6,7,8,9,10号书)。

该平台有2个用户(用户A和B)。

用户可以拥有无​​限量的书籍,甚至可以复制一次。例如,用户A将有3,4本书。

用户不能自己购买或获取书籍! 用户可以向其他人提供书籍,每人最多5本书。

所以用户A给用户B提供了5本书,那应该是什么,但是如何?

这是我到目前为止所做的。

用户模型:

class User < ActiveRecord::Base
  has_many :books, through: :user_books
  has_many :user_books

书籍型号:

class Book < ActiveRecord::Base
  has_many :users, through: :user_books
  has_many :user_books

UserBook型号:

class UserBook < ActiveRecord::Base
  belongs_to :book
  belongs_to :user

要在我的用户展示模型中添加图书:

  %h2 Add Books
  .field.item
    - Book.all.each do |book|
      =link_to add_book_user_path(@user, book) do
        .book
          = book.title

路线:

  resources :users, only: [:index, :show, :edit, :update] do
    member { post 'add_book'}
  end

用户控制器:

def add_book
  @user = User.find(params[:id])
  @book = Book.find(params[:id])
  @user.update_attribute(book_ids << @book.id)
end

我应该做一些创建动作,更新不会添加正确的东西吗?

我收到此错误:

  

没有路线匹配[GET]“/users/3/add_book.1”

看起来很奇怪有add_book.1而不是add_book / 1(1是书的ID)。

任何帮助将不胜感激! 非常感谢, 克里斯!

0 个答案:

没有答案