Nadpisanie .collection <<

Mam modele Board i Feed w relacji many to many, z modelem join Subscription.
Dodałem w Subscription pole root_id i teraz przy dodawaniu nowego rekordu do relacji np.

@board.feeds << @feed chciałbym, żeby można było ustawić root_id (ewentualnie w przypadku gdy się tego nie ustawi ręcznie, z automatu byłoby to @board.id)

Z tego co widzę, można nadpisywać te wygenerowane funkcje typu .collection <<, nie bardzo tylko wiem jak się za to zabrać. Chciałbym coś w stlyu starej metody czyli

def feeds<< (..., root_id = nil) super Tera powinno ustawić w wygenerowanym rekordzie Subscription .root_id na self.id jeżeli był nil, lub na root_id jeżeli daliśmy w argumencie) i zapisać ten zupdejtowany rekord subskrypcji end
Będę wdzięczny za podpowiedź.

Możesz spróbować napisać jakąś własną metodę operującą na relacji: http://apidock.com/rails/v3.2.13/ActiveRecord/Associations/ClassMethods (rozdział “Association extensions”)

Najprościej będzie zamienić relację has_and_belongs_to_many na has_many :through (http://guides.rubyonrails.org/association_basics.html#choosing-between-has-many-through-and-has-and-belongs-to-many). Wtedy masz bezpośredni dostęp do subscription i możesz po prostu zrobić np tak:

@boards.subscriptions.build(feed: @feed, root_id: 42)