Rails 3 包含自身的模型



我目前正在制作一个嵌套类型对象模型,我很好奇如何使用 Rails 3 来处理这个问题。

基本上我有以下几点:

  • 断言
  • Expression_Group
  • 表达

断言由 1-N Expression_Groups组成。 Expression_Groups由 1-N 表达式组成。 对我来说,ORM的棘手部分是,Expression_Groups也可能由其他Expression_Groups组成。

想想一个SQL SELECT,说我们正在构建WHERE子句。

((V > 2 AND X = 0) OR (Y > 2 OR (Z = 4 OR S <> 2)))

当看到这样的东西时,我们可以分解它并说:

 Z = 4 - Expression
(Z = 4 OR S <> 2) - Expression Group
(Y > 2 OR (Z = 4 OR S <> 2)) - Expression Group CONTAINING Expression AND Expression_Group

等等。 我想做的是让用户能够构建该结构。 我想使用 Rails 3 并以这样一种方式构建我的模型,这样我就不必自己使用处理器,可以简单地按原样使用表单。

我知道如何设置除包含Expression_Groups的Expression_Groups之外的所有关系。

有什么想法吗?

你考虑过has_and_belongs_to_many吗? http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html

>假设ExpressionGroup对象之间可能存在一对多关系,这样的关联可能会起作用:

has_many :child_expression_groups,
         :class_name => "ExpressionGroup",
         :foreign_key => "parent_id",
         :dependent => :destroy

请注意,这将需要一个新字段 - parent_idexpression_groups 表中允许为 null 并包含父ExpressionGroup的 ID(如果有父

(。

然后,您可以通过仅检索系统中parent_id设置为 nil 的表达式组(或在 ExpressionGroup 模型中为此定义范围(来获取所有顶级表达式组。

如果您需要更高级的处理(例如使其成为多对多等(,请考虑使用类似 Ancestry 的东西。

相关内容

  • 没有找到相关文章

最新更新