Если вы явно не укажете обратные отношения, Rails сделает все возможное, чтобы вывести обратную ассоциацию в модели (по крайней мере, для ассоциаций has_many
, has_one
и belongs_to
), используя имена классов как основа для его предположений.
Но каждый раз, когда вы используете область видимости или устанавливаете нестандартное именование, вам нужно явно указать Rails, как перемещаться по ассоциациям, используя inverse_of
. В вашем случае:
class Journey < ApplicationRecord
has_many :activities, dependent: :destroy,
foreign_key: 'cms_journey_id',
inverse_of: :journey
end
class Activity < ApplicationRecord
belongs_to :journey, optional: true,
foreign_key: 'cms_journey_id',
inverse_of: :activities
end
Для справки в будущем документация Rubocop по отдельным полицейским, как правило, хороша и ясна и включает примеры «хороших» и «плохих». Просто найдите полицейского по имени (например, «Rails / InverseOf»), и вы в хорошей форме.