排序嵌套属性
Ordering nested attributes
我想订购嵌套属性:
我有一个带有嵌套属性的 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
.
这里发生了很多事情 - 最大的问题是为什么这项工作在开发中完美无缺,但在生产中却分崩离析?
我使用的解决方案实际上有效,即 -> {} 范围方法。经过一些挖掘后,加入 -> 我的命令实际上是问题所在。我在开发环境中拥有的虚拟数据不足以让我看到这一点。
我想订购嵌套属性:
我有一个带有嵌套属性的 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
.
这里发生了很多事情 - 最大的问题是为什么这项工作在开发中完美无缺,但在生产中却分崩离析?
我使用的解决方案实际上有效,即 -> {} 范围方法。经过一些挖掘后,加入 -> 我的命令实际上是问题所在。我在开发环境中拥有的虚拟数据不足以让我看到这一点。