Чтобы расширить мой комментарий, вы определяете отношения между пользователями и действиями дважды, что вызовет проблему, здесь:
# user.rb
has_many :activities
# activity.rb
belongs_to :user
И:
# user.rb
has_many :user_activities
has_many :activities, through: :user_activities
# activity.rb
has_many :user_activities, dependent: :destroy
has_many :users, through: :user_activities
Этоозначает, что при вызове user.activities
происходит конфликт, так как на него смотрятся две разные ассоциации: has_many - belongs to
to и has_many through
.Первый - один ко многим, второй - много ко многим.
Это не значит, что это плохая практика, просто нужно убедиться, что наименование не конфликтует.Я не уверен в характере отношений и в том, чего вы хотите достичь, но что-то вроде следующего поможет решить эту проблему:
# user.rb
has_many :created_activities, class_name: 'Activity'
has_many :user_activities
has_many :activities, through: :user_activities
# activity.rb
has_many :user_activities, dependent: :destroy
has_many :users, through: :user_activities
belongs_to :master_user, class_name: 'User'
Это обновит ваш код, чтобы вы могли вызывать следующее:
user.created_activities # has_many
user.activities # has_many through
activity.master_user # belongs_to
activity.users # has_many through
Очевидно, что вы можете называть ассоциации по-разному, а также переименовывать отношение has_many through
, если оно добавляет ясности.
Документы здесь немного веские, но стоит потратить время на то, чтобы понять - есть и другие варианты, такие как foreign_key
, если имена ваших столбцов отличаются от условных обозначений.
Надеюсь, это поможет - напишите мне, если у вас возникнут вопросы:)