Rails has_many association:获取关联对象的虚拟属性

时间:2017-04-25 15:35:45

标签: ruby-on-rails ruby

我有以下两种关联:

# 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导致它被更新。

希望这是有道理的。我不确定这是否可行......

1 个答案:

答案 0 :(得分:0)

我知道这不是你问题的答案,但由于缺乏声誉我无法发表评论,这就是为什么将其作为答案发布

如果您在Author中维护虚拟属性,即last_updated_book,该怎么办?然后,您可以查询author.last_updated_book.foo_virtual_attribute