这其实是一个ORM的问题。一般来说实体中有什么属性,那么它相应的数据库的表中才会有相应的字段。 比如 Comment 实体中,有 title 和 content 属性,这样 comments 表中就会有 title 和 content 字段。 但,我在看视频 http://railscasts-china.com/episodes/rails-tutorial 时就发现:发现实体 Comment 中没有 content 属性,但,同样可以实现ORM。 这是为什么呢》
#4 楼 @zacker330 好吧,我明白你的意思了。comment model 中确实不用显式写出属性,rails 在暗地里做了一些工作,它会知道你的 model 有什么字段属性的。
#6 楼 @zacker330 这个确实是问题.. 程序的可读性会有影响。无论用什么方式解决,原生的 AR 都没有提供解决方案。
我就在静等 DataMapper 2 了..
#13 楼 @zacker330 不这样做也没什么不好,想知道一个类有什么字段的方法太多了
随时可以用 Foo.columns
或者 Foo.column_names
查
你担心新的开发者不好维护,程序可读性降低,我觉得只是因为不习惯而已,实际上用下来并没有问题
#14 楼 @hooopo 实际上 Rails 一直以来都有两个问题是比较困扰的,现在不觉得只是因为都瘸习惯了而已..
1>. Model 的字段不明,这个在 Java 还真不是问题,因为 Java 会区分 field 和 method 的调用方式。该加 () 加 (). rubyist 早就习惯不加 () 的调用方式了。导致看代码过程中你无法区分是 field 还是 method. 就需要回头看 schema.rb 或者 直接瞄数据库..
2>. Controller 的 Mapping 不明,这个在 Java 上也不是问题.. 因为 Java 现在的实现方式都是 Annotation( 直接标注在方法上).. 往往在 debug 的时候经常会某个 url 出错,需要立即进入对应的 Controller 看看代码。发现你得先进 routes.rb 看看到底是哪个东西映射的。尤其在 Rails 4 之后,routes Concern 加进来,找都找不着...
很多人说:你瘸了,我卖你副拐吧.. annotate
, rake routes | grep
两副拐到手,你终于能走正步了..
出门跟邻里相亲打招呼,发现为啥就自己需要拄拐。哀叹自己遗传基因不好.. 听天由命。
突然旁边就走来一个大叔面带微笑:
!![]((http://d.pr/i/4j5X+)
潜心修炼两个时辰,你就脱拐了.. 仔细询问邻里相亲,发现他们都是这样脱拐的。..
其实书里面只写着三个单词:你将整书付之一炬,刻与村头木板石碑,退隐江湖,深藏功与名。
石碑上刻着: . . . ^^^^^^^^^^^^^^^^^^^ | # Sinatra + DataMapper | vvvvvvvvvvvvvvvvvvvvvv
@Saito 哈哈哈,生动~
其实我现在 Java 里面有字段提示,很多时候还是会去看数据库。特别是有时候会需要跳过 JPA 用 SQL 去查询东西的时候。
虎大王同学@zacker330 你可能需要 ruby 另外一套 orm http://datamapper.org/getting-started.html
#18 楼 @zacker330 JPA 和 SQL 并存的,基本操作会通过 JPA, 但相当复杂的会跳过 JPA(不使用 JPQL) 用 SQL 查询。按照 JPQL 一点一点下去写下去,还不如直接 SQL 加载复杂查询所需要的数据,当然这些数据只读。在 Ruby 里面忘掉 Java 的处理方式会更容易接受。