将应用程序从Rails 4.2.9升级到Rails 5.2.1。
通过许多令人讨厌的部分更新了依存关系,最终在console
中运行了应用程序,现在尝试访问server
上的页面。一些页面加载,而其他页面:
不能具有has_many:through关联“ User#clubs”,该关联在定义关联之前必须经过“ User#memberships”。
不清楚在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
答案 0 :(得分:3)
这可能只是模型中的订购问题。 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