标签: awesome-nested-set

Rails 4 after_save previous_changes不起作用

我在模型上有一个after_save回调,我正在调用previous_changes来查看属性(is_complete)是否发生了变化.即使属性发生更改,previous_changes也会返回空哈希.

这是回调:

after_save do |record|
  puts "********************"
  puts record.previous_changes.to_s
  puts record.is_complete
  puts "********************"
end
Run Code Online (Sandbox Code Playgroud)

这是我在日志中得到的:

********************
{}
true
********************
********************
{}
false
********************
Run Code Online (Sandbox Code Playgroud)

如果is_complete的值从true更改为false,则它应该在previous_changes哈希中.更新正在通过正常保存完成!而且我没有重新加载这个对象.

--- 更新 ---

我在发布问题时没有考虑过这个,但是我的模型使用了awesome_nested_set gem,看来这是重新加载对象或以某种方式干扰after_save回调.当我注释掉acts_as_nested_set时,回调似乎工作正常.

--- 更新2 ---

使用around_save回调修复此问题,该回调首先确定属性是否已更改,然后生成,然后执行在数据库中进行更改后需要执行的操作.工作解决方案如下所示:

around_save do |record, block|
  is_complete_changed = true if record.is_complete_changed?
  block.call
  if is_complete_changed
    ** do stuff **
  end
end
Run Code Online (Sandbox Code Playgroud)

activerecord ruby-on-rails ruby-on-rails-4 awesome-nested-set

4
推荐指数
2
解决办法
3770
查看次数

令人敬畏的嵌套集顺序

我在轨道上使用了令人敬畏的嵌套设置插件.我如何进行排序:name column or something?

目前显示树状

A
- C
- B
Run Code Online (Sandbox Code Playgroud)

我想要它

A
- B
- C
Run Code Online (Sandbox Code Playgroud)

treeview ruby-on-rails awesome-nested-set

3
推荐指数
1
解决办法
2983
查看次数

如何从awesome_nested_set 渲染一棵树并且只访问数据库一次?

正如标题状态,我想渲染ul-li基于一个-树awesome_nested_set模型,并击中了数据库只有一次。我正在使用 Ruby on Rails 4.1。

我的查询如下所示:

Page.root.self_and_descendants.where('depth < ?', 2)
Run Code Online (Sandbox Code Playgroud)

这样做的有效方法是什么?

如何在不丢失 where 条件的情况下递归遍历它?例如,当我询问每个Page实例时,如果它是叶子 ( page_instance.leaf?),那么它不会在深度为 2 处停止,但在我挖掘深度超过 2 之前它不会再次访问数据库。有人可以帮助我解决下一步?

这个问题与站点地图有关。

ruby-on-rails nested-sets awesome-nested-set

3
推荐指数
1
解决办法
1393
查看次数