假设 Rails 模型具有持久/非持久属性,那么引用它们的最佳实践是什么?如果您查看公开可用的代码,就会发现使用了不同的模式。
例如,如果您有从一个模型到另一个模型的关联。使用有什么区别self.association_name and @协会名称?。最好的方法是什么?
与定义的非持久属性相同attr_accessor :attr在模型中。您可以使用这两种方法来参考它们,自我属性 and @attr。最好的方法是什么?
self.x
/self.x=y
总是方法调用。
(self.x
只是糖self.__send__(:x)
and self.x = y
真的只是糖self.__send__(:x=, y)
)
@x
, 另一方面,仅指 an 实例变量 http://www.rubyist.net/~slagell/ruby/instancevars.html.
Using @x
不管用与 AR 关联,因为 AR 仅定义x/x=
(哪些是方法)因其神奇的操作。 (AR 本质上只是通过这些方法和路线“捕获”意图访问它自己的内部数据结构是无关任何名称相似的实例变量。)
attr_accessor http://www.rubyist.net/~slagell/ruby/accessors.html允许“双向访问”因为且仅因为它使用与其支持的同名实例变量(它必须将值存储在某处)。考虑一下attr_accessor :x
相当于:
def x; @x; end
def x= (y); @x = y; end
快乐编码。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)