是否有一个框架,允许我定义只有一次的模型?(Is there a framework that al

2019-09-16 09:08发布

我刚刚完成了创建多个模型和一个必须单独写他们所有的属性1)在Rails的ActiveRecord 2)在Rails数据库迁移,以及3)Backbone.js的模型。 我不觉得很干。 我认为在干涸这个问题会切换到Node.js的,我可以在背面和前端(理想情况下重复使用相同型号Backbone.js的),但什么有关数据库架构的使用CoffeeScript的第一步? 我知道我可以创建一个模型属性生成SQL的框架,但在此之前我走上了这方面的努力,我想,如果这样的事情已经存在或正在开发中。

这也将是真棒,如果这个框架可以统一视图和控制器,这样我就没有应用程序/视图,应用程序/控制器,应用程序/资产/ JavaScript的/视图,应用程序/资产/ JavaScript的/路由器,并且像所有类似的定义事情在不同的地方。

Answer 1:

退房德比 ,下Node.js的框架积极的发展 ,它试图统一视图和控制器(以及更多):

[德比]运行在服务器和浏览器相同的代码,并且它会自动同步数据。 德比负责模板的渲染,包装,以及模型 - 视图绑定的开箱即用。 由于所有功能都设计为一起工作,不需要重复代码和胶水代码。

我在建设有德比小嗜好应用程序,到目前为止,它一直乐趣和心灵的挑战性。 统一的新的世界有它自己的物理..

有一点要注意的是德比是建立在之上的赛车 ,一个“实时模型同步引擎” 你可能会发现它“重”如果你希望这样的事情缝合在一起Backbone.js的,快递和一些数据库层的光胶水代码。


编辑 :我还没看着密切其他框架:

  • 流星 (node.js中)
  • ClojureScript一 (ClojureScript)


Answer 2:

对于模型,你可以简单地创建一个基类的继承它。 你只需要调用set_table_name在派生类。 我已经得到了离开与此有关。 它的优点是你可以在派生类调整功能。 例:

应用程序/模型/ 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的讲话(刚才),但我100%相信,可以实现同种的重复代码消除。 JavaScript有同样多的动态性红宝石。

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



Answer 3:

它的目标一个Wakanda系统。



文章来源: Is there a framework that allows me to define a model only once?