【问题标题】:Ordering nested attributes排序嵌套属性
【发布时间】:2020-06-05 19:15:04
【问题描述】:

我希望订购嵌套属性:

我有一个带有嵌套属性的 Budget 模型:

has_many :budget_items, dependent: :destroy

我正在使用 simple_form gem 和一个基本的嵌套属性表单,它们工作得非常好:

f.simple_fields_for :budget_items do |i|
  ...
end

在我看来,Active Record 默认按 updated_at 属性排序。

我以前曾涉足过这个方法并尝试过这种方法:

f.simple_fields_for :budget_items, @budget.budget_items.order(:some_attribute) do |i|
  ...
end

这种方法有效,但会破坏自动表单字段验证 css 更改。通常,如果我将嵌套字段留空等。当表单验证失败时,字段会突出显示为红色等。如果您传入可选集合,嵌套表单可以工作,但验证失败。

我有一个灯泡时刻,我尝试了这个:

  has_many :budget_items, -> { joins(...).order(..) }, dependent: :destroy

基本上在关联中添加一个具有顺序的范围。就我而言,我的订单很复杂,但它有效 - 仅在开发中。一旦我将它部署到生产中,订单似乎是完全随机的,而不是updated_at

这里发生了很多事情 - 最大的问题是为什么这项工作在开发中完美无缺,然后在生产中崩溃了?

【问题讨论】:

    标签: ruby-on-rails rails-activerecord simple-form


    【解决方案1】:

    我使用的解决方案实际上有效,即 -> {} 范围方法。经过一番挖掘之后,我拥有的 join -> order 实际上是问题所在。我的开发环境中的虚拟数据不足以让我看到。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-11-13
      • 2017-07-04
      • 2017-06-08
      • 1970-01-01
      • 2021-02-16
      • 2020-09-02
      • 2019-02-28
      相关资源
      最近更新 更多