使用 Sinatra 和 DataMapper,类 是一回事吗?
Using Sinatra and DataMapper, are classes one and the same?
在数据映射器的 sinatra 应用程序中声明 类 时,我知道它看起来像这样:
class Thing
include DataMapper::Resource
property :id, Serial
property :name, String
property :num, Integer
end
如果这不是网络应用程序,而只是桌面 ruby 程序,您可以这样做:
class Thing
def initialize(name, num)
@name = name
@num = num
end
def doTheThing(num)
num * 2
end
end
那么这样做是否有意义...
class Thing
include DataMapper::Resource
property :id, Serial
property :name, String
property :num, Integer
def initialize(name, num)
@name = name
@num = num
end
def doTheThing(num)
num * 2
end
end
(edit) 忘记了我的问题:这有效吗?我在这里错过了任何意见或事情吗?谢谢!
我目前正在处理我的第一个半大型 sinatra 项目,非常感谢您的帮助。
在相关说明中,如有任何关于要学习的优秀代码示例(sinatra/ruby 网络应用程序等)的建议,我们将不胜感激!
谢谢!
您提供的不同实现与 Sinatra 或 Web 或桌面应用程序没有任何内在关系。桌面应用程序可以使用 Datamapper 来持久化对象,而 Sinatra 应用程序可以使用任何类型的普通旧 Ruby 对象。
也就是说,第三个实现可能会出现问题。原因是 DataMapper::Resource
defines a method called initialize
然后你用你自己的版本覆盖它。
模型 类 包含您自己编写的其他方法的情况并不少见。例如,这些可以封装某种基于持久属性的业务逻辑。
所以试着回答你的问题:你所有的类都是有效的,但最后一个可能不是很明智。
在数据映射器的 sinatra 应用程序中声明 类 时,我知道它看起来像这样:
class Thing
include DataMapper::Resource
property :id, Serial
property :name, String
property :num, Integer
end
如果这不是网络应用程序,而只是桌面 ruby 程序,您可以这样做:
class Thing
def initialize(name, num)
@name = name
@num = num
end
def doTheThing(num)
num * 2
end
end
那么这样做是否有意义...
class Thing
include DataMapper::Resource
property :id, Serial
property :name, String
property :num, Integer
def initialize(name, num)
@name = name
@num = num
end
def doTheThing(num)
num * 2
end
end
(edit) 忘记了我的问题:这有效吗?我在这里错过了任何意见或事情吗?谢谢!
我目前正在处理我的第一个半大型 sinatra 项目,非常感谢您的帮助。
在相关说明中,如有任何关于要学习的优秀代码示例(sinatra/ruby 网络应用程序等)的建议,我们将不胜感激!
谢谢!
您提供的不同实现与 Sinatra 或 Web 或桌面应用程序没有任何内在关系。桌面应用程序可以使用 Datamapper 来持久化对象,而 Sinatra 应用程序可以使用任何类型的普通旧 Ruby 对象。
也就是说,第三个实现可能会出现问题。原因是 DataMapper::Resource
defines a method called initialize
然后你用你自己的版本覆盖它。
模型 类 包含您自己编写的其他方法的情况并不少见。例如,这些可以封装某种基于持久属性的业务逻辑。
所以试着回答你的问题:你所有的类都是有效的,但最后一个可能不是很明智。