ruby-on-rails - Rails 5 hasMany through 没有过滤
问题描述
我正在从 Rails 4 迁移到 Rails 5 并遇到了这个问题。我有hasMany
through
连接Track
和RightHolder
类的关系:
class RightHolder < ActiveRecord::Base
has_many :right_holder_tracks, class_name: 'TrackRightHolder', dependent: :delete_all
has_many :tracks, -> { uniq }, through: :right_holder_tracks
end
class TrackRightHolder < ActiveRecord::Base
belongs_to :track
belongs_to :right_holder
end
class Track < ActiveRecord::Base
has_many :track_right_holders, dependent: :destroy
has_many :right_holders, -> { uniq }, through: :track_right_holders
end
在 Rails 4 中这是完美的,但在 Rails 5 中,当我尝试得到:
Track.first.right_holders
RightHolder.first.tracks
Rails 应用程序执行以下查询:
select * from right_holders
select * from tracks
我究竟做错了什么?这是一个错误吗?
解决方案
在 Rails 5 中,关系uniq
被弃用,取而代之的是distinct
:
https ://edgeguides.rubyonrails.org/5_0_release_notes.html#active-record-deprecations
此答案中的更多信息
推荐阅读
- java - 当我使用spring boot maven项目mysql-connector并将数据作为发布请求插入数据库时,但不将数据保存在数据库中
- vue.js - q-input 有值,那么只有规则将适用
- javascript - 防止 Vue.Js 在挂载 DOM 元素时替换 Twig 内容
- html - 当我尝试将 svg 转换为 base64 并提供给图像源但我没有得到确切的字体系列和字体大小
- javascript - 道具没有在反应中传递子组件
- docker - 容器在使用 Dockerfile 时工作,但在使用 docker-compose.yml 时不工作
- c++ - 使用 clang 或 gcc 对 Mac 的 OpenMP 支持
- python - 如何从共享两个公共列的一组行中选择一列中具有最大值的熊猫行?
- java - 间歇性 NoClassDefFoundError 可能是什么原因?
- objective-c - GRPC prbc.h 类未生成objective-c