簡體   English   中英

Rails has_many關聯:獲取關聯對象的虛擬屬性

[英]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_attrtrue

現在,當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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM