Сортировка или область применения по индивидуальному методу в рельсах - возможно ли это? - PullRequest
0 голосов
/ 31 октября 2011

Мне было интересно, скажем, у меня есть две модели, обсуждения и пост.Посты принадлежат обсуждению.У меня есть пользовательское действие в модели обсуждения, которое выполняет проверку последней активности объекта путем проверки даты создания его последней публикации.т.е.

 def latest activity
     self.posts.last.created_at || self.created_at
 end

Могу ли я написать область, которая упорядочивает объекты модели этим методом, а не, скажем, столбец в модели обсуждения?

 scope :latest_activity, #what to put here?

1 Ответ

1 голос
/ 31 октября 2011

есть ли причина, по которой вы не хотите менять родителя? В Rails есть встроенный метод touch для этой цели. Например: assign_to: обсуждение,: touch =>: last_reply_at сделает так, чтобы при изменении (создании / обновлении) ответа родительское поле обновляло это поле с помощью отметки времени Time.now. Одним из преимуществ этого является возможность не запрашивать детей каждый раз, когда вы хотите увидеть, какое обсуждение имеет последний ответ.

Взгляните на http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html

EDIT

Еще один способ сделать это - добавить фильтр, например, after_create в посте обновляет поле с текущим временем модели обсуждения.

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