Rails世界:Rails第四版翻译思考(四)
由Gudao Luo在2011-07-26 at 16:31发表的
- 原文
- But Isn’t SQL Dirty?
- It was built on the notion that SQL is neither dirty nor bad, just verbose in the trivial cases.
- 翻译
- SQL语句是灰色的吗?
- 它(Active Record)当时是以这一概念建立起来的,即SQL语言既不是灰色的也不是有缺陷的,只是很简单的SQL查询有点累赘。
道喜评论:
先理解一下,什么是“灰色收入”?存在似乎还有一定的合理性和现实性的收入。从真正意义上说,这种收入是不合理甚至是不合法的。
当然在计算机科学中,灰色(Dirty)既不是说“合理”也不是“合法”的问题,而是通过一种"不寻常"的方法达到处理数据的目的。
例如,类对象的内存地址是确定的。要是修改了该对象属性内容。参见: What’s New in Edge Rails: Dirty Objects 。该对象的内容被修改了,但其内存地址还是保持不变。在早期的Rails版本中,进行这样的修改是无法知晓的,该对象可称之为灰色对象(Dirty Objects)。
修改类对象的属性肯定是可以的。但是问题是在Rails早期版本中,不知道曾经修改了该对象。之后的Rails版本,就可以知道是否修改了该对象。这样就有了一个认知修改的方法。这是一个从灰色走向白色的过程。
Rails世界:Rails第四版翻译思考(三)
由Gudao Luo在2011-07-19 at 11:36发表的
- 原文
- If we pass multiple parameters to a where call, Rails treats the first parameter as a template for the SQL to generate. Within this SQL, we can embed placeholders, which will be replaced at runtime by the values in the rest of the array.
- 参考资料: http://goo.gl/PUHGp http://goo.gl/szPRn
- “the first parameter”使用不妥。a)因为第一个参数的第一个元素作为“a template for the SQL”。b)第二个参数是什么?c)只有在这个实例中可以这样说明这个参数使用方法。
- “If we pass multiple parameters to a where call,”,这是一种通用说法,而这一段下面的代码仅仅是只有一个参数的实例。
- 要是不看代码,这一段最后的“array”使人感到很突然。
- 中文翻译
- 我们可以将一个参数传递到调用函数where。在这参数是数组(Array类)情况下,Rails把该数组的第一个元素作为生成SQL语句模板使用。在这SQL语句中,可以嵌入占位符,而在实时运行时这些占位符是由该数组的其它元素来代替。
- Order.where([“name = ? and pay_type = ‘po’”, name])
- 我们可以将多个参数传递到调用函数where。在第一个参数是字符串(String类)情况下,那么Rails把该第一个参数作为生成SQL语句模板使用。在这SQL语句中,可以嵌入占位符,在实时运行时这些占位符将由第二个参数(数组)来代替。
- Order.where(“name = ? and pay_type = ‘po’”, name)
Rails世界:阅读Rails第四版原版思考(二)
由Gudao Luo在2011-06-29 at 19:20发表的
Rails世界:阅读Rails第四版原版思考(一)
由Gudao Luo在2011-06-28 at 23:19发表的

- 英文原文Page268
Inside the code of the model, we can use the read_attribute and write_attribute private methods. These take the attribute name as a string parameter.
- 网络中文翻译(一)
最后,在model本身的代码内部,你可使用read_attribute()和write_attribute()私有方法。这些接受做为字符串参数的属性的名字。
- 网络中文翻译(二)
最后,也可以使用Model自己的私有方法read_attribute和write_attribute,这两个方法使用属性名作为参数。
- 中文第三版翻译Page238
最后,在模型内部的代码中,我们可以使用read_attribute()和write_attribute()这两个私有方法,参数都是字符串形式的属性名称。
