我不确定如何创建一个事件,但仍保持数据集成正确。 这是我的模特
客户
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表,其中customer_id = current_customer和created_last。我不确定如何在书籍控制器中创建这样的查询。我相信它可能看起来像查询一样。我是对的?当前客户是sessionHelper方法的当前客户
@report = BookManager where customer.id == current_customer.id AND created_last.last
最后但并非最不重要的是,每次客户通过按“保存”修改文本时,都会执行动作创建,并创建一个新的book_manager,其中包含与该图书管理员相关联的正确的第3本模型书籍,以及与该图书管理员相关联的客户。
我有以下代码,但我不确定它是否正确
class BooksController < ApplicationController
def edit
@book = Book.find(params[:id])
end
def create
@customer = Customer.first
@book = @customer.BookManager.build(params[:book])
end
end
答案 0 :(得分: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