1

我在我的模型上使用acts_as_list。我在该模型上有一个位置列,如果位置超过我的上限,我不希望将模型对象保存到数据库中。(我尝试使用rails位置验证,但显然 Rails 验证首先运行,然后 act_as_list 完成更新(增加)位置并将其保存在数据库中的工作。

acts_as_list scope: :widgets, {0 < :position <= 2} 我浏览了他们的文档,但找不到任何东西,这样的事情是否可能。

我怎样才能在 Rails 中做到这一点。

任何帮助都感激不尽。如果您需要,请随时向我询问更多信息。

4

2 回答 2

0

acts_as_list本机不支持此功能。您可以尝试基于不超过x匹配范围的记录添加验证?

validates :maximum_records

private

def maximum_records
  if where([[scope conditions]]).count > something
    errors.add :base, 'too many records'
  end
end
于 2017-05-28T21:10:03.970 回答
0

我认为你需要做这样的事情

acts_as_list scope: :widgets,  if: 'position <= 2'
于 2017-05-27T06:44:06.807 回答