【发布时间】:2011-06-30 02:59:21
【问题描述】:
我目前正在使用 gem 'nested_set' 进行评论线程。
我想要做的是防止评论级别超过 2 级。我厌倦了这样的事情:
class Comment < ActiveRecord::Base
....
before_save :ensure_max_nestedset_level
private
# We don't want comments to go more than 2 levels deep. That's overkill
def ensure_max_nestedset_level
if self.level > 2
self.level = 2
end
end
end
但看起来你不能设置一个级别只获得一个对象级别。目标是为评论线程强制执行 2 级深度的 MAX。任何人都可以建议一种方法来强制这种情况发生吗?
用例是:
Comment Main (level 0)
Comment Reply (level 1)
Comment Reply about XXXX (level 2)
当用户回复最后一个(关于 XXXX)时,我不希望将评论设置为 3 级,我想将其上限设置为 2。
想法?谢谢
【问题讨论】:
-
这里似乎有一些与级别有关的措辞:rubydoc.info/gems/nested_set/1.6.4/frames您是否尝试过使用
each_with_level? -
@Steve,谢谢,但我不确定这是否符合要求。我认为 each_with_level 用于循环结果。我正在处理的是插入一个新的嵌套对象,并希望防止将级别设置为深。对吗?
标签: ruby-on-rails ruby-on-rails-3 nested nested-sets acts-as-tree