@ Inst_var.method.another_method?Рубин - PullRequest
       0

@ Inst_var.method.another_method?Рубин

0 голосов
/ 04 апреля 2019

Я новичок в Ruby, и я столкнулся с этим кодом в приложении Rails:

@datasource = DataSource.find(datasource_id)
@datasource.partnertype.par_description

Я знаю, что с помощью точечной нотации в Ruby мы получаем доступ к методам. В этом случае метод экземпляра, но что может быть par_description? 1005 *

Может ли метод вернуть другой метод в Ruby?

1 Ответ

3 голосов
/ 04 апреля 2019

Второй метод выполняется для значения, которое возвращается из первого метода

Например, рассмотрим строку «ABC»

, затем код "ABC".reverse.reverse возвращает «ABC»

здесь «ABC» .reverse возвращает строку «CBA», а метод reverse этой строки возвращает «ABC»

В ответ на ваш вопрос @ datasource.partnertype может быть функцией или связанной записью и par_descriptionможет быть другой функцией или связанным столбцом для типа партнера или метода для связанной записи

Поскольку вы указали, что partnertype является именем таблицы, тогда

partnertype может быть таблицей, которая связана сТаблица источника данных с некоторой ассоциацией, такой как own_to или has_one, или любой другой

. Таким образом, @datasource.partnertype возвращает связанную запись partnertype для источника данных, а @datasource.partnertype.par_description возвращает столбец par_description для связанного partnertype

Например, рассмотрим таблицы User и Article и предположим, что они оба связаны с отношением has_one, т. Е. Пользователь как одна статьяи Article принадлежит пользователю, а таблица Article имеет столбец с именем description, тогда запрос

@user = User.find(1) //1 us ID here
article = @user.article

. Приведенный выше запрос возвращает запись Associated Article для пользователя, и теперь, если мы запустим article.description, он вернется, тогда он получитописание для этой статьи

означает несколько запросов в базу данных, которые мы можем использовать

@user.article.description

Затем Ruby выполнит один запрос и вернет описание для нас

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...