передать отношение в аргументе функции (продолжение) - PullRequest
0 голосов
/ 12 июня 2018

У меня есть проект rails, который я использую sequel gem (ORM).Я хотел бы понять, возможно ли передать отношение в аргумент функции.

Примерно так (это решение не работает):

def query(relation)
  Album.eager(relation)
end

query(artist: label)
query(:artist)
query(:artist, :tracks)

Документация: http://sequel.jeremyevans.net/rdoc/classes/Sequel/Model/Associations/DatasetMethods.html

1 Ответ

0 голосов
/ 12 июня 2018

Это связано с тем, как аргумент передается в Ruby.Если вы принимаете один аргумент, вы не можете вызвать его с помощью N .Исправлено следующее:

def query(*relations)
  Album.eager(*relations)
end

Где теперь вы принимаете ноль или более аргументов и передаете их как есть, используя оператор splat .

...