是否有框架允许我只定义一次模型?

我刚刚完成了几个模型的创建,并且必须在1)Rails ActiveRecord 2)Rails数据库迁移和3)Backbone.js模型中分别编写所有属性。 我感觉不太干涩。 我假设干扰这个问题的第一步是切换到node.js,我可以在后端和前端使用CoffeeScript(理想情况下重用相同的Backbone.js模型),但是数据库模式呢? 我意识到我可以创建一个从模型属性生成SQL的框架,但在我开始这项努力之前,我想知道这样的事情是否已经存在或正在开发中。

如果这个框架可以统一视图和控制器以便我没有应用程序/视图,应用程序/控制器,app / assets / javascripts / views,app / assets / javascripts / routers等所有定义相似的内容,那也是很棒的不同地方的事情。

查看Derby ,一个在活动开发下的node.js框架,它试图统一视图和控制器(以及更多):

[Derby]在服务器和浏览器中运行相同的代码,并自动同步数据。 Derby开箱即用地处理模板渲染,打包和模型视图绑定。 由于所有function都旨在协同工作,因此不需要代码复制和粘合代码。

我正在用Derby构建一个小型的业余爱好应用程序,到目前为止,它一直很有趣,而且很有挑战性。 统一的新世界有自己的物理学。

有一点需要注意的是,Derby建立在Racer之上,这是一个“实时模型同步引擎”; 你可能会觉得它很“重”,如果你期待像一个轻粘胶代码,将Backbone.js,express和一些数据库层拼接在一起。


编辑 :我尚未密切关注的其他框架:

  • meteor (node.js)
  • ClojureScript One (ClojureScript)

对于模型,您可以简单地创建一个inheritance自它的基类。 您只需要在派生类中调用set_table_name 。 我已经离开了这个。 它的优点是可以在派生类中调整function。 例:

应用程序/模型/ widget.rb:

 class Widget < ActiveRecord::Base def some_common_method # ... end end 

应用程序/模型/ blue_widget.rb:

 class BlueWidget < Widget set_table_name "blue_widgets" # special methods, if any end 

等等

对于迁移,只需为公用表列定义一个函数。 例如:

 def common_table_columns(t) t.integer :id t.stirng :some_string # etc end create_table(:table1) { |t| common_table_columns(t) } [:table2,:table3,:table4].each do |name| create_table(name) { |t| common_table_columns(t) } end create_table :table5 do |t| common_table_columns(t) t.string :extra end 

不能代表Backbone.js(刚才),但我完全有信心你可以实现同样的重复代码消除。 Javascript和ruby一样具有动态性。

说了这么多,为什么你有几个相同的表? 您是否使用正确的解决方案来解决问题?

这是Wakanda系统的目标之一。