Ruby on rails 想要创建一个新的图书实例而不是更新

Ruby on rails 想要创建一个新的图书实例而不是更新,ruby-on-rails,ruby,ruby-on-rails-3,ruby-on-rails-3.1,Ruby On Rails,Ruby,Ruby On Rails 3,Ruby On Rails 3.1,我想要的是创建一个配置文件页面,在这里我可以查看“上一本书”字段,如果客户更改了文本,那么它将创建一个新的图书 我有以下型号与您有很多关系 Customer -- ID, First, Last, Email Book -- ID, Description Book_Managers -- ID, Customer_id, Book_id, Visible 现在我拥有的是一个客户编辑,它允许我通过渲染更多模型(如书籍、手机等)来查看多个表单 这是我的客户控制员 def edit @cust

我想要的是创建一个配置文件页面,在这里我可以查看“上一本书”字段,如果客户更改了文本,那么它将创建一个新的图书

我有以下型号与您有很多关系

Customer -- ID, First, Last, Email
Book -- ID, Description
Book_Managers -- ID, Customer_id, Book_id, Visible
现在我拥有的是一个客户编辑,它允许我通过渲染更多模型(如书籍、手机等)来查看多个表单

这是我的客户控制员

def edit
  @customer = Customer.find(params[:id])
  if @customer.books.any?
    @book = @customer.books.order("created_at DESC").first
  else
    @book = @customer.books.build
  end
end
我想看到的是,如果我在进入book form时创建了一个新实例,我应该看到最后一个实例,并且能够将“JavaScript圣经”修改为“Java圣经”,它不会更新它,而只是创建一个新版本。现在当我去看表格时,我什么也没看到。如果我因为某种奇怪的原因这么做,那只是允许我更新

 class BooksController < ApplicationController
   def create
     @book = current_customer.books.build(params[:book])
     if @book.save
       flash[:success] = "Book Created"
       redirect_to root_url
     else
       render 'customer/edit'
     end
   end

   def index
     @books = Book.all
   end

   def destroy
     @book.destroy
     redirect_to root_url
   end
 end
结束


对我的图书管理员来说,现在唯一的问题是我的关联,我似乎找不到任何与当前客户相关的图书。我的查询有什么问题吗?

有一些版本控制的诀窍。这意味着:

您可以这样做:

def update
  params = params[:book].merge(:previous_version => params[:id])
  @book = current_customer.books.create(params[:book])
end

它将在每次更新时创建一本新书。最后一个版本将是没有“上一个版本”的书。

我也使用它来允许客户向朋友展示内容或不展示内容。所以我不能用这个,所以我需要我的第二个模型
def update
  params = params[:book].merge(:previous_version => params[:id])
  @book = current_customer.books.create(params[:book])
end