Ruby抽象模型语句

时间:2012-03-09 22:06:38

标签: ruby sinatra datamapper

如何在property课程中删除对Link语句的多个引用?我使用

为宝石的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 个答案:

答案 0 :(得分:1)

成为优秀开发人员的一部分是知道何时不尝试减少重复。从技术上讲,拥有多个property语句是一种重复形式,但它是如此无害,以至于不值得你去除它。考虑到这里隐含的替代方法,我认为这一点尤其正确,我觉得这些方法令人困惑且难以阅读。

最终,这是一种不必要的习惯用语,会使您的代码难以维护。 property陈述应该保持不变,我建议你不要采用不同的方法。

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

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