在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
(编辑)忘记我的问题:这有效吗?我在这里错过了什么意见或事情?谢谢!
我目前正在开展我的第一个半大型sinatra项目,并希望得到帮助。
在相关的说明中,任何有关学习代码(sinatra / ruby web apps等)的良好示例的建议都将不胜感激!
谢谢!
答案 0 :(得分:1)
您提供的不同实现与Sinatra或Web或桌面应用程序本身没有任何关系。桌面应用程序可以使用Datamapper来持久保存对象,而Sinatra应用程序可以使用任何类型的普通旧Ruby对象。
尽管如此,第三次实施可能会引发问题。原因是DataMapper::Resource
defines a method called initialize
然后用您自己的版本覆盖。
模型类包含您自己编写的其他方法并不罕见。例如,这些可以封装基于持久属性的某种业务逻辑。
所以试着回答你的问题:你的所有课程都是有效的,但最后一课可能不是很明智。