我有以下两种关联:
# 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"
。该表单与nested_fields_for
关联author
,因此表单也会更新关联的author
。
在我update
中调用books_controller
之前,book
会更新author
及其关联的foo_virtual_attr
,我会设置该书的true
虚拟属性1}}到update
。
现在,当author
发生时:我希望book
(与book
关联的那个)能够获取在关联{{1}中设置的虚拟属性}}。
author
应该可以说:&#34;嘿,我正在通过 更新此 {{1}与我关联的,这里是book
虚拟属性的值。&#34; 我不希望foo_virtual_attribute
记录查询author
的数据库,因为book
记录将不知道该书的虚拟属性。我可以通过深入研究params哈希获取虚拟属性,但这并不理想。我想,author
必须有一种方法可以知道哪个关联的author
导致它被更新。
希望这是有道理的。我不确定这是否可行......
答案 0 :(得分:0)
我知道这不是你问题的答案,但由于缺乏声誉我无法发表评论,这就是为什么将其作为答案发布
如果您在Author
中维护虚拟属性,即last_updated_book
,该怎么办?然后,您可以查询author.last_updated_book.foo_virtual_attribute