这里我有3个模型
Customer Book Book_Manager
id id id
first description customer_id
last book_managers visible
email
password
该协会已经跟随
class Customer < ActiveRecord::Base
has_many :book_managers
has_many :books, :through => :book_managers
end
class BookManager < ActiveRecord::Base
belongs_to :customer
has_many :books
end
class Book < ActiveRecord::Base
belongs_to :book_manager
def customer
book_manager.customer
end
end
现在,我可以通过以下
创建新客户并在rails控制台中创建新书cust.book_managers.build :visible => true
cust.book_managers.first.books.build :description => 'the odyssey'
cust.save!
以这种方式查看
cust = Customer.find 1
cust.books
Book.first.customer
上面的代码在rails控制台中运行。但我需要让它在控制器中工作。它就像个人资料页面,客户进入客户#编辑并查看模型书籍。在那时,如果是第一次,或者如果之前存在某些内容,那么最后一本书将出现在文本字段描述中。我之前尝试过以下代码但是book_manager没有更新
@book = @customer.books.order("created_at DESC").first
如果修改或创建了文本字段,那么它将创建一个新的book_manager和books并具有正确的关联。另请注意,可见的布尔下拉菜单将允许true或false(如果可见)并在book_manager模型上进行修改。
对不起我的法语语法。
我有以下但似乎没有很好地工作
class BooksController < ApplicationController
def create
@book = current_customer.book_managers.build()
@book = @customer.book_managers.first.books.build(params[:book])
if @book.save
flash[:success] = "Book Created"
redirect_to root_url
else
render 'customer/edit'
end
end
end