rails模型使用外部gem的类层次结构?

时间:2010-05-25 12:32:13

标签: ruby-on-rails oop model controller

我正在开发一个数据模型为的项目:

  • 在单独的宝石中实施
  • 不使用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。

因此,如果我在带有显示/删除操作的表中呈现Apple,则rails将查找名为marketplace_food_apple_path的方法,类似当然不存在。

有没有办法表明Apple是Fruit的ActionView :: Base结构?

我希望这个“基础强制转换”对于基于Ruby的框架来说是“微不足道的”,但似乎这个面向对象模型的简单示例不适用于Rails?

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

或者它只是超出了Rails的范围?

感谢您的任何指示!

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:-1)

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

它基本上证实了我对Rails的怀疑,我认为它更像是一种VB:易于学习,适合小东西(购物或社区网站),但非常有限。

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

由于Rails 3.0似乎不是答案(好吧我们有几个ORM,但我们仍然无法在模型中使用继承)我切换到 Ramaze ,一个小框架,使没有关于如何组织数据的假设,使其适合几乎任何类型的网络需求。

如果您正面临使用Rails的模型约束,也许您应该忘记Rails并检查Ramaze!