我刚刚完成了使用Rails的Agile Web Development,第四版(http://pragprog.com/book/rails4/agile-web-development-with-rails)这本书,并且需要一些帮助来理解如何创建模型之间的亲子关系.我做了一些谷歌搜索并在StackOverflow上进行了搜索,并且总体上了解了单表继承和类表继承.
我有一堆关于档案馆藏中不同项目的元数据.大多数元数据对于所有对象都是相同的,例如,登录号,标题,描述,版权等.除了公共元数据之外,还存在仅适用于某些类型的项目的元数据,例如,照片需要保持跟踪物品是彩色还是黑白; 录音需要跟踪格式(CD,DAT,盒式磁带等)和持续时间; 文本材料需要跟踪页数; 等等
Class hierarchy
Item
|
+-----------+------------+
| | |
Photo SoundRecording Text
Run Code Online (Sandbox Code Playgroud)
由于我将拥有数千条记录,因此我将单表继承视为效率太低.我理解这里提到的类表继承的想法:http://martinfowler.com/eaaCatalog/classTableInheritance.html但我对如何在新的Ruby on Rails项目中实际实现它感到困惑.我是否将类表继承实现为多态关联(http://guides.rubyonrails.org/association_basics.html#polymorphic-associations)或我是否在错误的轨道上?
谢谢.
或者Rails本身是否适合开发API?
看来的ASP.NET Web API项目类型有一定的历史与WCF交织在一起(如在详述这个职位为例),所以也许它并不适用于轨.
UPDATE
为了澄清,Microsoft拥有ASP.NET MVC框架.最近,他们推出了一个名为ASP.NET Web API的框架.ASP.NET Web API似乎与ASP.NET MVC有相似之处,但是专门针对RESTful Web服务进行了修剪.Ruby/Rails空间中是否有等价物?
我正在使用 Rails 4.2.3 和 Nokogiri 从网站获取数据。当我没有从服务器得到任何响应时,我想执行一个操作,所以我有:
begin
content = open(url).read
if content.lstrip[0] == '<'
doc = Nokogiri::HTML(content)
else
begin
json = JSON.parse(content)
rescue JSON::ParserError => e
content
end
end
rescue Net::OpenTimeout => e
attempts = attempts + 1
if attempts <= max_attempts
sleep(3)
retry
end
end
Run Code Online (Sandbox Code Playgroud)
请注意,这与从服务器获取 500 不同。我只想在完全没有响应时重试,要么是因为我没有得到 TCP 连接,要么是因为服务器无法响应(或其他一些导致我没有得到任何响应的原因)。除了我的情况之外,是否有更通用的方法来考虑这种情况?我觉得还有很多我没有想到的其他异常类型。
我正在开发一个Ruby on Rails应用程序,我有一个名为Activity的模型.我希望能够创建一个新的Activity实例,并将它作为现有Activity实例的精确副本,除了它具有不同的ID.我怎样才能做到这一点?