[英]Rails has_many association: get virtual attribute of associated object
我有以下兩個關聯:
# 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
的表單,例如title = "book_1"
的book
記錄。 該表單的關聯author
具有nested_fields_for
,因此該表單也在更新關聯author
。
在我要在books_controller
調用update
來更新book
及其關聯author
,我將書籍的foo_virtual_attr
的虛擬屬性foo_virtual_attr
為true
。
現在,當update
發生時:我希望那個author
(與book
關聯的那個人)能夠獲取在關聯的book
設置的虛擬屬性。
author
應該能夠說:“嘿, 這 book
與我相關的特定 book
正在為我更新, 這是其foo_virtual_attribute
虛擬屬性的foo_virtual_attribute
。” 我不希望author
記錄在數據庫中查詢book
因為這樣author
記錄就不會知道這本書的虛擬屬性。 我可能可以通過挖掘params哈希來獲取虛擬屬性,但這並不理想。 我想,必須有針對的方式author
知道其中的相關books
導致它被更新。
希望這是有道理的。 我不確定這是否可能...
我知道這不是您問題的答案,但由於缺乏聲譽,我無法在評論中發表評論,這就是為什么將其發布為答案
如果您在Author
維護一個虛擬屬性,即last_updated_book
該怎么辦? 然后,您可以查詢author.last_updated_book.foo_virtual_attribute
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.