0

イベントを常に作成する方法はわかりませんが、データの整合性を正しく維持しています。これが私のモデルです

お客様

  id
  first
  last
  email

  id
  description

Book_Manager

  customer_id
  book_id
  visible

これを行うには、has_many関係を使用する必要があり、彼の説明は以下のとおりです。

Book
has_many :book_managers
    has_many :customers, :through => :book_managers
Book_Manager
    belongs_to :customer
    belongs_to :book
Customer
    has_many :book_managers
    has_many :books, :through => :book_managers

アイデアは、前回からすでに作成されたデータを確認することです。つまり、Book = Book_Manager Tableで、customer_id=current_customerおよびcreated_lastであるクエリを作成する必要があります。ブックコントローラーでこのようなクエリを作成する方法がわかりません。クエリは次のように見えるかもしれません。私は正しいですか?現在の顧客は、sessionHelperメソッドの現在の顧客です

@report = BookManager where customer.id == current_customer.id AND created_last.last

最後になりましたが、顧客が保存を押してテキストを変更するたびに、アクションcreateが実行され、正しい3番目のモデルの本が関連付けられ、顧客もブックマネージャーに関連付けられた新しいbook_managerが作成されます。

私は次のコードを持っていますが、それが正しいかどうかわかりません

class BooksController < ApplicationController
    def edit
        @book = Book.find(params[:id])
    end

    def create
        @customer = Customer.first
        @book = @customer.BookManager.build(params[:book])
    end
end
4

1 に答える 1

3
Book
  has_many :book_managers
  has_many :books, :through => :book_managers

Book_Manager
  belongs_to :customer
  belongs_to :book

Customer
  has_many :book_managers
  has_many :customers, :through => :book_managers

   Book                Book_Manager          Customer
|-------------|       |-------------|       |---------|
| id          |-1---*-| book_id     |       | id      |
| description |       | customer_id |-*---1-| first   |
|             |       | id          |       | last    |
|             |       |             |       | email   |
|-------------|       |-------------|       |---------|

を持っているのでhave_many through、結合テーブル()を参照する必要はありませんBook_Manager。直接アクセスできます。

@customer = Customer.first
@books = @customer.books #return all books
于 2012-07-31T13:41:51.223 に答える