2012-03-09 85 views
1

如何删除对Link类中的property语句的多个引用?我已经做了与require语句宝石类似的东西与红宝石抽象模型语句

require 'sinatra' 
require 'data_mapper' 
require 'shotgun' 

成为..

%w{sinatra data_mapper shotgun}.each { |lib| require lib}

 %w{sinatra data_mapper shotgun}.each { |lib| require lib} 
     DataMapper::setup(:default, "sqlite3://#{Dir.pwd}/mini.db") 
     class Link 
      include DataMapper::Resource 
      property :id, Serial 
      property :title, Text, :required => true 
      property :url, String, :required => true 
      property :points, Integer, :default => 0 
     end 
     DataMapper.auto_upgrade! 

回答

1

的是一个良好的开发部分就是知道什么时候,不要试图减少重复。从技术上讲,有多个property陈述是一种重复的形式,但它是如此无害以至于不值得花时间去除。根据这里暗示的替代方法来考虑时,尤其如此,因为我认为这种方法令人困惑并且难以阅读。

最终,这是一个不必要的习惯用法,它会使您的代码难以维护。声明应该保留,我建议你不要采用不同的方法。

如果你绝对必须出于某种原因做这个,你可以使用:

[ 
    [:id, Serial], 
    [:title, Text, :required => true], 
    [:url, String, :required => true], 
    [:points, Integer, :default => 0] 
].each { |args| property *args } 
+0

我完全同意。这是出于好奇心,我试图将reddit应用程序减少到尽可能少的行数。我现在不知道如何使用'* args'。谢谢! – Dru 2012-03-09 22:25:43