0

私が望むのは、前の本のフィールドを表示できるプロファイル ページを作成することです。顧客がテキストを変更すると、新しい本が作成されます。

has_many 関係を持つ次のモデルがあります

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

私が見たいのは、ブックフォームに行くときに新しいインスタンスを作成した場合、最後のインスタンスが表示され、「The JavaScript Bible」を「The Java Bible」に変更できるはずであり、更新されずに新しいインスタンスが作成されることですバージョン。現在、フォームブックに移動しても何も表示されません。そして、私が何らかの奇妙な理由で行った場合、それは私が更新することしかできませんでした.

 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
 @book = current_customer.books.build(params[:book])
 if @book.save
   flash[:success] = "Book Updated"
   redirect_to root_url
 else
   render 'customer/edit'
 end

終わり

私の本の管理者にとって、今のところ唯一の問題は私の関係です。現在の顧客との本を見つけることができないようです. 私のクエリに何か問題がありますか?

4

2 に答える 2

1

バージョン管理用の gem がいくつかあります。これは:https://www.ruby-toolbox.com/categories/Active_Record_Versioning

于 2012-08-01T14:28:23.433 に答える
0

あなたはこのようなことをすることができます:

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

更新のたびに新しい本が作成されます。最後のバージョンは「previous_version」のない本になります。

于 2012-08-01T14:55:06.453 に答える