2014-04-10 3 views
0

У меня есть пользовательская Модель:Рубин ActiveRecord поле дата

:user_name (string) 
:birth_date (date) //date field in SQL base (Year-month-day) 

Я хочу, чтобы отобразить поле месяца для всех пользователей в моей модели. Что-то в этом роде: User.last.birth_date.month

Как это сделать?

+0

Учитывая то, что вы написали должны работать идеально, что происходит не так? Вероятно, стоит показать, что вы пробовали, и как результат, который вы получаете, отличается от того, что вы хотите. – Shadwell

+0

Что-то вроде 'User.pluck (: birth_date) .map (&: month)'? – mdesantis

ответ

4

Я не понял, хотите ли вы, чтобы имя пользователя переключилось на месяц или месяц. Во всяком случае, pluck является то, что вы хотите:

User.pluck(:birth_date).map(&:month) 
#=> [4, 5, 1, 1] 

Для пользователя и месяц:

User.pluck(:user_name, :birth_date).map { |u, b| [u, b.month] } 
#=> [['thomas', 4], ['smith', 5], ['alfred', 1], ['jim', 1]] 
+0

Pluck отлично, особенно теперь он принимает несколько столбцов. Постскриптум Я не думаю, что вам действительно нужно отображать карту после выщипывания. User.pluck (: user_name,: birth_date) должен давать тот же результат, что и User.pluck (: user_name,: birth_date) .map {| u, b | [u, b.month]}. –

+0

'pluck' - лучшая новая функция Rails с 2.3 :)« карта »необходима для извлечения месяца, иначе вы бы получили дату – mdesantis

+0

Nevermind, вы правы. Забыл весь смысл, он хотел только номер месяца. :) Обычно вы хотите предотвратить дальнейшее отображение, так как pluck уже делает это. –

Смежные вопросы