Rails: не может иметь has_many: через ассоциацию до определения ассоциации
Обновление приложения с Rails 4.2.9 до Rails 5.2.1.
Через большую часть неприятной части обновления зависимостей и еще много чего, и, наконец, приложение работает в console
и теперь пытается попасть на страницы server
, Некоторые страницы загружаются, но другие:
Не может иметь has_many: через ассоциацию "Пользователь # клубы", которая проходит через "Пользователь # членство" до определения сквозной ассоциации.
Не ясно, что могло измениться в Rails 5, чтобы вызвать это? Даже не уверен, где начать искать.
Мысли?
Кажется, сбой на линии, вызванной ниже:
class ViewableStories
...
def for_user
Story
.includes(:publications)
.references(:publications)
.where(
stories[:user_id]
.eq(@user.id)
.or(
publications[:club_id]
.in(@user.club_ids) <<==== execution halts
.and(
publications[:publish_on]
.lt(Date.today)
.or(publications[:publish_on].eq(nil))
)
)
)
end
end
Который вызывается из model/story.rb
def self.viewable_published_stories_for(user)
ViewableStories
.for_user(user)
.includes(:cover_image, :user, :table_of_contents)
.published
.chronological
end
1 ответ
Вероятно, это просто проблема заказа в вашей модели. has_many
должен прийти перед has_many through
,
Итак, сейчас у вас, вероятно, есть:
class User < ApplicationRecord
...
has_many :clubs, through: :memberships
has_many :memberships
...
end
Вам просто нужно переместить has_many :memberships
выше has_many through
:
class User < ApplicationRecord
...
has_many :memberships
has_many :clubs, through: :memberships
...
end