Rails 升级 3.2 到 4.0:模型弃用警告

Posted

技术标签:

【中文标题】Rails 升级 3.2 到 4.0:模型弃用警告【英文标题】:Rails Upgrade 3.2 to 4.0: Model deprecation warning 【发布时间】:2019-04-28 15:15:50 【问题描述】:

在 Rails 3.2 中,我有一个用户模型如下->

User model

has_many :billing_invoices, :through => :user_purchases, :select => "DISTINCT billing_invoices.invoice_date,billing_invoices.account_number"

我正在尝试升级到 Rails 4.0,但我收到了弃用警告,改为使用范围块。 如何重写这个 has_many 语句以在 4.0 中工作?

【问题讨论】:

【参考方案1】:

我想这就是你需要的:

has_many :billing_invoices, -> distinct , through: :user_purchases

见https://guides.rubyonrails.org/association_basics.html#scopes-for-has-many-distinct

更新:

如果你想覆盖SELECT 那么:

has_many :billing_invoices, -> select("DISTINCT billing_invoices.invoice_date,billing_invoices.account_number") , :through => :user_purchases

见:https://guides.rubyonrails.org/association_basics.html#scopes-for-has-many-select

【讨论】:

谢谢!如何针对多个不同的值进行调整? 我正在尝试 has_many :billing_invoices, -> select "DISTINCT billing_invoices.invoice_date,billing_invoices.account_number", :through => :user_purchases

以上是关于Rails 升级 3.2 到 4.0:模型弃用警告的主要内容,如果未能解决你的问题,请参考以下文章

如何选择性地静音 Rails 3 弃用警告?

在 Heroku 中运行任务的 Rails 2.3 样式插件和弃用警告

如何修复弃用警告:类级别方法将不再继承 Rails 6.1 中的范围?

如何解决弃用警告“方法 to_hash 已弃用并将在 Rails 5.1 中删除”

用户测试中多个客户端的 Symfony 4.4 弃用警告已弃用,但仍存在于文档中

Django 从 3.2 -> 4.0 和 DRF 路径更新