加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 引用Ruby / Rails中的关联/属性时,*,self *和@

发布时间:2020-12-16 21:31:53 所属栏目:百科 来源:网络整理
导读:假设具有持久性/非持久性属性的Rails模型,有关引用它们的最佳做法是什么?如果您查看公开的代码,则使用不同的模式. 例如,如果您有一个模型到另一个模型的关联.使用self.association_name和@association_name?有什么区别?最好的方法是什么? 与在模型中使用
假设具有持久性/非持久性属性的Rails模型,有关引用它们的最佳做法是什么?如果您查看公开的代码,则使用不同的模式.

例如,如果您有一个模型到另一个模型的关联.使用self.association_name和@association_name?有什么区别?最好的方法是什么?

与在模型中使用attr_accessor:attr定义的非持久属性相同.您可以使用两种方法(self.attr和@attr)来引用它们.最好的方法是什么?

解决方法

self.x / self.x = y总是方法调用.

(self.x只是自己的糖.__发送__(:x)和self.x = y真的只是为了自己的糖.__发送__(:x =,y))

另一方面,@x只指一个instance variable.

使用@x将不能与AR关联使用,因为AR仅定义x / x =(它们是方法)用于其神奇操作. (AR基本上只是通过这些方法“捕获”意图访问,并通过自己的与任何类似命名的实例变量无关的内部数据结构路由).

attr_accessor允许“访问两种方式”,因为它只是因为它使用相同名称的实例变量作为它的后备(它必须存储值在某个地方).考虑attr_accessor:x等效于:

def x; @x; end
def x= (y); @x = y; end

快乐编码.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读