Определение пользовательского «цепного» метода ActiveRelation, такого как `order` и` limit` - PullRequest
1 голос
/ 06 января 2011

Rails имеет эти прекрасные цепные методы.Как добавить свой собственный?Я думал об определении метода класса в модели, из которой я хочу вызвать свой пользовательский метод, но это будет работать только в начале «цепочки»:

class << self
  def order_by_specialness
    order(:specialness)
  end
end

Я подозреваю, что мне нужно расширитьActiveRecord::Relation как-то, так как это то, что возвращается каждым из методов цепочки запросов.Но оттуда я в растерянности.

1 Ответ

3 голосов
/ 06 января 2011

Вы хотите использовать scope:

scope :order_by_specialness, order(:specialness)

Позвонить по номеру:

User.order_by_specialness.first

Хотя использование order_by_specialness на самом деле не спасет вас ни разу. Вы должны использовать что-то вроде special:

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