【问题标题】:Rails 5 hasMany through is not filteringRails 5 hasMany through 没有过滤
【发布时间】:2019-11-17 08:45:17
【问题描述】:

我正在从 Rails 4 迁移到 Rails 5 并遇到了这个问题。我有hasManythrough 关系来连接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

我做错了什么?这是一个错误吗?

【问题讨论】:

    标签: ruby-on-rails rails-activerecord has-many-through


    【解决方案1】:

    在 Rails 5 中,不推荐使用关系 uniq 以支持 distinct : https://edgeguides.rubyonrails.org/5_0_release_notes.html#active-record-deprecations

    更多信息在this answer

    【讨论】:

      【解决方案2】:

      只需将{ uniq } 更改为{ distinct }

      【讨论】:

        猜你喜欢
        • 2017-05-16
        • 2023-03-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-04-23
        • 2019-03-04
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多