如何管理/保持复杂相关对象的状态

时间:2011-07-15 07:41:48

标签: ruby-on-rails ruby-on-rails-3

对于一个物业网站,我有很多方面的方面

  • 我可以根据查询的内容打开/关闭某些方面
  • 有些方面有两个值 - 开放间隔,封闭间隔,例如“仅1张床”和“1张或更多床”
  • 可以多次选择一些方面。例如:我可以选择“公寓”然后我可以进一步选择“loft”

目前我有

  • FacetSet对象,它包含所有Facet。
  • 每个Facet都有一个Value对象
  • 价值对象持有桶(仅1张床,1张或更多张床)
  • Bucket持有此选项的间隔,查询和标签(仅限1张床)

我在所有对象中都有.to_param方法,并将它们格式化为URL。但是维护/跟踪此代码非常脏和复杂。

如果我必须在整个这个结构中更换一个水桶,那就变成了噩梦。或者,如果我想在桶中使用AND和OR逻辑,则代码复杂性将变高。

另一种方法是不将每个对象格式化为url,而是将FacetSet转储为JSON。

管理这种结构的最佳方法是什么?

1 个答案:

答案 0 :(得分:0)

就个人而言,我有一个搜索资源并将数据存储在那里。

这里的好例子:

http://railscasts.com/episodes/111-advanced-search-form