我希望对嵌套属性进行排序:
我有一个带有嵌套属性的Budget模型:
has_many :budget_items, dependent: :destroy我使用的是simple_form gem和一个基本的嵌套属性表单,它们工作得很好:
f.simple_fields_for :budget_items do |i|
...
end在我看来,默认情况下,活动记录默认按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。
这里发生了很多事情--最大的问题是,为什么这种工作在开发中是完美的,然后在生产中就会崩溃?
发布于 2020-06-06 04:18:07
我使用的解决方案实际上是有效的,即-> {} scope方法。在深入研究了join ->的顺序之后,我得到的结果实际上是问题所在。我的开发环境中的虚拟数据不足以让我看到这一点。
https://stackoverflow.com/questions/62222653
复制相似问题