• ActiveRecord 真的是 ORM 吗? at 2014年06月22日

    #25 楼 @darkbaby123 不要用已有的经验去揣测未知的东西,尤其是学新知识的时候。 实际上,用已有的知识去揣测新新知是很自然的方式。这就是对比学习。只要不固执的认为自己以前的全是对的,也不排斥新知识,这种方式,我觉得是可行的。 我看了几本 Rails 的书,都是在说怎么做,而没有说为什么。这让我有很多疑问。来这里问,人们也条件反射式的认为我在排斥。。。

  • ActiveRecord 真的是 ORM 吗? at 2014年06月21日

    #23 楼 @Rei 好。谢谢了。 经过大家这么一讨论,我明白一些了。

  • ActiveRecord 真的是 ORM 吗? at 2014年06月21日

    #17 楼 @Rei migration 在我看来适合增量开发,比如在已经有的基础上开发新功能,然后维护。而我一个全新的项目也用 migration?比如,一个订单系统还没有上线,需求每天都在变。今天要求 order 这个 model 要加个字段 A,第二天又加字段 B、C,第三天又加一个字段 D 等等,这样下去,我们是不是有很多个 migration 了?那么,我这个 model 最终有哪些字段,我总不可以一个一个 mirgration 的打开来总结出这个 model 的全部字段吧?对了,去数据库看表结构是个好办法。但是,这样不麻烦吗????请问,有没更好的实践,不这么麻烦?还是我猜错了?请指正。如果,我的假设是对的,那么,不到维护或开发新功能阶段,我想不到为什么要使用 migration.

    #18 楼 @billy 我明白你的意思。你说的是模型行为,当然不用考虑数据库。而建模的过程,除了考虑模型的行为,还必须要考虑它的内部结构(有什么属性)。而 ORM 应该能让我在建模的过程,不需要考虑数据库。而 ActiveRecord 这点没有做好。

  • ActiveRecord 真的是 ORM 吗? at 2014年06月21日

    #14 楼 @Rei 嗯嗯。不直接修改 schema.rb 是好的,尤其在生产环境。但是,开发过程,我会经常调整 model 模型,所以,我在开发过程,不会用那个 migration。上线后,才考虑使用 migration。

    而 ActiveRecord 的关系不会自动生成,如果是为了防止程序员使用太多“关联”,我觉得这个理由太那个了吧。。。。

    hibernate 的那个工具很少用的,在我的工作生涯中。用的地方就只是在最初生成建表语句的时候用。ORM 生成的表是没有索引的,所以,最终还是要手工处理一些数据库的东西。但是建模的过程(在 rails 里就是创建各种 model 的过程)是不需要考虑数据库的。

  • ActiveRecord 真的是 ORM 吗? at 2014年06月21日

    #12 楼 @billy

    假设,现在你要加一个 event 的类,它和 User 是多对一。如果我没猜错,是不是应该:

    rails g model event user_id:integer content:string
    

    然后,打开 event.rb 这个 Model,再向里面加上:

    belongs user

    请问,这个过程中,你没有从数据库开始考虑吗?你必须要考虑给 event 表加上一个外键。

    如果我猜错了,请告诉我更好的实践。谢谢了。

    还有,rails 的 migration 我很喜欢~

  • ActiveRecord 真的是 ORM 吗? at 2014年06月21日

    #9 楼 @billy 呵呵。我很明白老马的意思。所以,才不明白 Active Record 的一些设计。

    敢问,你在写 Rails 的 model 的时候,你不是从数据库开始思考问题的?你必须在 schema.rb 里定义数据库的字段,然后又跑到 model.rb 里加个关联。

  • ActiveRecord 真的是 ORM 吗? at 2014年06月21日

    #8 楼 @Rei 在我的眼里,ORM 是关系和结构都定义在一个地方,而不是分开定义。所以,我这么一个 Active Record 新手对 ActiveRecord 是不是 ORM 有疑问。

  • ActiveRecord 真的是 ORM 吗? at 2014年06月21日

    #5 楼 @i5ting 我用过 hibernate.只不过,我用的更多的是 jpa。

  • ActiveRecord 真的是 ORM 吗? at 2014年06月21日

    #3 楼 @Rei 我疑问,不代表我不接受。

    我只是想知道,为什么要这样设计?还有,你们要修改 model 之间的关系时,是不是又要改 model,又要去另一个文件改表结构。。

  • ActiveRecord 真的是 ORM 吗? at 2014年06月21日

    #1 楼 @Rei 谢谢了。

    请问 rails 是不是把表结构 (其实是 model 的属性) 的定义放在 db/schema.rb 里,然后把 model 之间的关联定义放在 model 里。。。。这样实际上是把结构和关联放在不同的地方了。。。。这让我觉得很别扭。

  • #5 楼 @Alexander 你是对的。我昨天看书时才知道。

  • #1 楼 @billy "#@name"是可以这样用的。

    然后,你的意思是说&block 实际上就是下面:

    class TaxCalculator
    
    def initialize(name)
    @name = name
    end
    
    def get_tax(amount)
    #@name on #{amount} = #{yield(amount)}"
    end
    
    end
    
  • 除夕夜你还看春晚? at 2013年02月08日

    没兴趣看春晚

  • #10 楼 @40hood 我只了解过 activiti5,jbpm5。但它们都需要扩展后,才能适合国情

  • #3 楼 @mimosa good job

  • #8 楼 @bhuztez 我目前只了解 jbpm4 和 activiti。至少发现他们是按标准来的。 因为中国的国情,所以国外的工作流引擎都不怎么要适合中国,扩展了才能用得好。

  • #1 楼 @alvin2ye 我只学了 ruby。 如果实在没有这方面的东东,可以考虑自己参照 activiti 的写个 ruby 版本的

  • #5 楼 @40hood 1降低学习成本 2它是规范,这一点很重要。 3我原有的系统的流程定义可以直接放到 rails 中使用

  • #3 楼 @liuhui998 谢谢。先收下。不过。也不是 BPMN2.0 规范的。

  • #1 楼 @KoALa 谢谢。刚看了它的流程定义那个章节的文档。http://ruote.rubyforge.org/definitions.html

    但,似乎不是 BPMN2.0 规范的

  • #17 楼 @wppurking 不是吧。有这么严重么,我第一次听说需要这样子做的。

  • #12 楼 @qhwa 我说的就是那个意思。

  • #18 楼 @huacnlee 嗯。我明白你的意思。 第一点,我在写 Model 的时候,是可以理解为在设计表的过程,但,更重要不是设计表,而是设计类。更先设计类,再设计表,才不会被“表”给绑定,这样才可以将类设计得更合理。 第二,“大多时候字段我都记得”,那只是你记得,但,后来人呢? 代码的干净不是说少多少多少代码的,而是 api 设计的无歧意性,以及最小惊奇化。“剩下的都是和业务有关的逻辑代码”,类中的属性是和业务有关的。

  • #9 楼 @chucai 嗯。 我不知道你说的小项目是多小。我也不确定8楼我是否说得够明白。但,我知道业务放在 model 中更内聚,你的依赖才可以更小化。 你说的对于小项目,可以满足,我可不可以理解为大项目的时候,model 会变得很庞大。如果我理解的是对的,那么我说你的 model 没有建模好。因为你的没有把关注点分离好,你将太多的东西,交给一个类去做了。

  • #7 楼 @chucai 第一,ORM 只是一个概念。 第二,我个人认为业务逻辑更应该放在 Model 中,而 application 类只不过是一个对外的门面。所以,Rails 中,application 类才会很薄。

  • #16 楼 @huacnlee 最终是一样的效果,但这样就是需要我在写类的时候,必须要先考虑数据表怎么建,而不是先考虑类怎么设计。 第二,当你想调用 Comment 类某个属性的时候,你打开 Comment 类,却发现里面什么也没有,这样不奇怪吗。 第三,字段和属性是两个概念。字段是数据库表中的概念,而属性是面向对象中类的概念。

  • #14 楼 @knwang 动态语言我一直都喜欢,我很早以前就学 python 了。这种思维方式的转变,我是可以转过来了的,而且,我用 java 的时间只有一年半,而且,这一年半的时间里,我更没有深入的学习 java。 第二,我的前几帖子里,我说的只一个 ORM 的概念问题,和语言无关的。

  • #2 楼 @kenshin54 嗯,我大概明白你的意思。 一、我是以对象为中心的开发,而不是数据库表,或者数据。所以,hibernate 的通过表生成对象的功能,我几乎忘了有这个功能。所以,一开始,我都只是写对象,不需要写数据库操作,但使用 rails,我看到的视频一开始就会说怎么操作数据库。 二、我说的实体不只有 getter ,setter。还包括了业务方法,如 Comment 类中,会有 save 方法。在国内,很多人写的 Entity 都只是 getter,setter。 三、我觉得:直正的 ORM 是,在我写完类的时候,类对应的数据库中的表也相当于建好了。

  • #1 楼 @sailtsao 首先,我可以确定你没有学好 hibernate。第二,ORM 只是一个概念:能把对象,对象间的关系映射到数据库。只不过,我在有些时候,在实体里看不到属性,但是实体相应的表中倒是有那个字段,感觉有点奇怪罢了。

  • #9 楼 @kenshin54 嗯,我正在尝试转变的我思维的。只不过,我是要知道能不能在不转变的前提下使用 rails。路由方面,rails 的确很强大,而且,我也很喜欢。但。orm 方面,我倒不觉得,我更希望是像 jpa,hibernate 一样的。