Вот как я обошел это:
class A < ActiveRecord::Base
has_many :bs
def cs
bs.map &:c
end
end
Вы можете что-то потерять.Например, cs
теперь доступен только для чтения, поэтому вы не можете назначить ему или build
или create
для него.Это хорошо в моем конкретном случае, потому что я всегда буду мутировать только bs
, что может быть лучше.Также объекты типа «многие ко многим», такие как B
, обычно будут иметь некоторые атрибуты, которые вы хотите установить.
Кстати, если C
соединен с B
с помощью has_many
вместо belongs_to
измените код выше, чтобы использовать flat_map
вместо map
.