2010-05-25 68 views
0

我工作的一个项目中,数据模型是:从外部宝石使用类层次结构的rails模型?

  • 在一个单独的创业板
  • 不使用ActiveRecord,也没有任何关系数据库存储(实际上它依赖于CouchDB的)
  • 品牌实施
  • 命名空间的使用使得类继承的密集使用

为了简化架构,让我们说我们有以下根类:

module Marketplace 
module Food 
    class Fruit 
    … 
    end 
end 
end 

和一对夫妇专门类:

module Marketplace 
module Food 
    class Peach < Marketplace::Food::Fruit 
    … 
    end 

    class Tomato < Marketplace::Food::Fruit 
    … 
    end 
end 

我想Rails的显示(和管理)所有的水果无论是他们的天性,而无需修改模型女巫完美的Rails工作。

的问题是,似乎的ActionView使用一定数量公约的定义将要根据实际的类名路径和URL。

所以,如果我提出一个苹果,在表展/删除操作,轨道将寻找一个名为marketplace_food_apple_path和类似的方法这当然是不存在的。

有没有一种方法可以指出Apple是Fruit的ActionView :: Base结构?

我期望这个“基地投”成为基于Ruby的框架“微不足道”,但似乎面向对象模型的这个简单的例子不使用Rails的工作?

如何管理rails中的“复杂对象”数据模型?

或者它超出了Rails的范围?

感谢您的指点!

回答

-1

好吧,因为我看到有很多有用的答案;)。

它基本上证实on Rails的,我看更像是一种VB的我的疑惑:简单易学,美观大方的小东西(购物或社区网站),但非常有限。

当它处理复杂的业务逻辑和数据时,Rails完全超出范围!

铁轨3.0似乎并没有得到答案既不是(好的,我们有几个ORM的,但我们仍然无法使用模型中的继承),我切换到Ramaze,小框架,使上怎么没有假设数据的组织使其适用于几乎任何类型的网络需求。

如果你面对Rails的模型约束,也许你应该忘记Rails并检查Ramaze!

0

http://railstips.org/blog/archives/2009/05/15/include-vs-extend-in-ruby/ < - 可能是你想要的,除非你只是想争论单继承与多继承strawman。

+0

不,这不是我想要的! 我正在寻找一种方法来处理在Rails中使用* class * inhertance的现有模型。 似乎这是不可能的,也不可能在Rails 3.0中。这是一个遗憾,这就是我转向Ramaze的原因。 模块包含/扩展是一个很好的功能,但根本不适合我们的数据模型模式,主要是因为该模型已经存在并且完全适合我们的Rails。 所以我没有找到一种方法来改变我们的组件到“适合”到Rails中,而是使用Rails来网络公开现有的应用程序逻辑。 – devlearn 2010-06-11 07:37:50