的虚拟属性我有以下两个协会:导轨的has_many协会:获得相关物体
# models
class Author < ApplicationRecord
has_many :books
end
class Book < ApplicationRecord
belongs_to :author
accepts_nested_attributes_for :author, allow_destroy: true
attr_accessor :foo_virtual_attr
end
我现在填充一些记录
author = Author.create(name: "John")
author.books.build(title: "book_1").save
author.books.build(title: "book_2").save
author.books.build(title: "book_3").save
也就是说设置,这里的情况是:
让我们说我有一个表格,更新一个具体的book
,比如book
记录title = "book_1"
。该表格与其关联的author
有nested_fields_for
,因此表格也在更新关联的author
。
之前,我打电话的books_controller
update
,将更新book
及其相关author
,我的foo_virtual_attr
书的虚拟属性设置为true
。
现在时update
发生了:我想是author
(关联到book
一),以能够抓住所设定的相关book
内的虚拟属性。
- 换句话说,在
author
应该能够说:“嘿,我正被关联到我,在这里这个特定book
更新是针对foo_virtual_attribute
其虚拟属性的值“。
我不想author
要查询的记录的book
数据库,因为那么author
记录将不知道这本书的虚拟属性。我可以通过挖掘params hash来获取虚拟属性,但这并不理想。我想,author
必须知道其关联的books
中的哪一个导致其更新。
希望这是有道理的。我不知道这是可能的...
尝试从作者模型保存之前的'self.book.virtual_attr' – Tachyons
@Tachyons但'作者'has_many书籍。它会如何知道抓住适当的书? – Neil
你好,你为什么'book'接受'author'属性?你有没有考虑将'book'传递给将更新作者的方法 – Bohdan