首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >@inst_var.method.another_method?红宝石

@inst_var.method.another_method?红宝石
EN

Stack Overflow用户
提问于 2019-04-04 23:25:02
回答 1查看 33关注 0票数 0

我是Ruby的新手,我在Rails应用程序中遇到了以下代码:

代码语言:javascript
复制
@datasource = DataSource.find(datasource_id)
@datasource.partnertype.par_description

我知道在Ruby中使用点符号我们可以访问方法。在本例中是实例方法,但是par_description会是什么呢?

方法可以返回Ruby中的另一个方法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-04-04 23:41:44

对从第一个方法返回的值执行第二个方法

例如,考虑字符串"ABC“

然后代码"ABC".reverse.reverse返回"ABC“

这里"ABC".reverse返回字符串"CBA“,该字符串上的反向方法返回"ABC”

问题@datasource.partnertype可以是一个函数或相关记录,par_description可以是另一个函数或相关记录的partnertype或相关记录上的方法的相关列

正如您指定的那样,partnertype是一个表名

partnertype可以是与具有某种关联的数据源表相关联的表,例如belongs_to或has_one或任何其他

因此,@datasource.partnertype返回数据源的关联partnertype记录,@datasource.partnertype.par_description返回关联partnertypepar_description

例如,考虑表UserArticle,并假设这两个表都与关系描述相关联,即User as one has_one,并且文章属于用户,并且文章表具有名为description的列,则查询

代码语言:javascript
复制
@user = User.find(1) //1 us ID here
article = @user.article

上面的查询返回用户的相关文章记录,现在如果我们运行article.description,它将返回该文章的描述

在我们可以使用的数据库中进行多次查询

代码语言:javascript
复制
@user.article.description

然后,Ruby将执行一个查询并为我们返回描述

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55519672

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档