【问题标题】:acts_as_list puts record at wrong position with array scopeact_as_list 将记录放在数组范围的错误位置
【发布时间】:2019-12-10 19:29:06
【问题描述】:

我有一个为acts_as_list gem 设置的模型: acts_as_list scope: [parent_id: nil], add_new_at: :top, top_of_list: 0 我希望有下一组记录: [Record id: 1, parent_id: nil, position: 1; Record id: 2, parent_id: nil, position: 0; Record id: 3, parent_id: 1, position: nil], 但它的发生就像它忽略了 parent_id: nil 并且实际的记录数组是: [Record id: 1, parent_id: nil, position: 2; Record id: 2, parent_id: nil, position: 1; Record id: 3, parent_id: 1, position: 0]

【问题讨论】:

    标签: ruby-on-rails ruby acts-as-list


    【解决方案1】:

    s,您似乎正在尝试传入嵌套在范围数组中的哈希值。试试:

    acts_as_list scope: { parent_id: nil }, add_new_at: :top, top_of_list: 0
    

    或者,如果您想为每个单独的parent_id 列出一个列表,请使用:

    acts_as_list scope: :parent, add_new_at: :top, top_of_list: 0
    

    acts_as_listappend the _id for you

    【讨论】:

    • 当我创建新记录并回滚时,第一个建议会导致异常ActiveRecord::StatementInvalid (PG::SyntaxError: ERROR: syntax error at or near "{")Record Update All (1.0ms) UPDATE "records" SET "position" = ("records"."position" + 1), "updated_at" = '2019-12-11 08:34:42.166539' WHERE ({:parent_id=>nil}) 第二个是不可取的。我将它作为散列传递给数组,因为它将来会更改为 [:status, parent_id: nil] 的类型。 \s 感谢您的回答。
    • 我对您的实际要求有点困惑。他们按照你写的方式,你似乎只想维护一个无父项的列表(这就是提供nil 会做的事情)。范围功能旨在帮助我们确定与当前记录在同一范围内的其他项目(因此您通常只提供列,而不提供值)。
    猜你喜欢
    • 1970-01-01
    • 2018-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-30
    • 1970-01-01
    • 1970-01-01
    • 2022-11-15
    相关资源
    最近更新 更多