Как я могу выставить все доступные жидкостные методы для модели? - PullRequest
1 голос
/ 19 января 2012

В некоторых моих моделях определены жидкостные методы с использованием:

class MyModel < ActiveRecord::Base
  liquid_methods :created_at, :foo, :bar, :baz
end

Как я могу получить список доступных методов для модели (я полагаю, в хэше или массиве)? Я хотел бы вывести список доступных методов пользователям, которые используют их в таких вещах, как сообщения на форуме или шаблоны электронной почты.

Ответы [ 3 ]

1 голос
/ 13 сентября 2012

Это работает:

MyModel.new.to_liquid.methods - Liquid::Drop.new.methods
1 голос
/ 18 июля 2013

Спасите себя от ненужных экземпляров:

MyModel::LiquidDropClass.public_instance_methods - Liquid::Drop.public_instance_methods
# => [:foo, :bar, :baz] (or whatever your liquid methods are)

Когда вы вызываете liquid_methods для модели, жидкость создает класс LiquidDropClass в пространстве имен вашей модели и содержит жидкие методы.

0 голосов
/ 19 января 2012

Я не знаю, будет ли это иметь другое поведение относительно жидких методов, но вы можете сделать:

MyModel.methods
MyMethod.new.methods

В любом случае, для класса или экземпляра вы можете вызвать .methods, чтобы получить массив символов, которые являются допустимыми методами для использования в этом классе или экземпляре. Затем вы можете делать такие вещи, как .methods.sort или .methods.sort_by и т. Д.

...