如何仅根据日和月获取用户的生日

Gar*_*ela 4 postgresql ruby-on-rails date

我想要一份今天生日和即将到来的生日(明天)的会员名单。

In users.controller.rb
def birthday
   @birthday_users = User.all.order("created_at DESC").where(:birthday => Date.today)
end

def upcoming_birthday
   @upcoming_birthday_user = User.all.order("created_at DESC").where(:birthday => 1.days.from_now )
end
Run Code Online (Sandbox Code Playgroud)

仅当日、月、年与今天相同时,这些代码才有效。

例子:

用户1的生日=2018年10月3日(显示在生日列表中)

用户2的生日=2000年10月3日(未显示在生日列表中)

Ana*_*and 5

在用户模型中

PostgreSQL

scope :today_birthday, { where('EXTRACT(month FROM birthday) = ? AND EXTRACT(day FROM birthday) = ?', Date.today.month, Date.today.day).order("created_at DESC") }

scope :upcoming_birthday, { where('EXTRACT(month FROM birthday) = ? AND EXTRACT(day FROM birthday) = ?', 1.days.from_now.month, 1.days.from_now.day).order("created_at DESC") }
Run Code Online (Sandbox Code Playgroud)

数据库

scope :today_birthday, { where('MONTH(birthday) = ? AND DAY(birthday) = ?', Date.today.month, Date.today.day).order("created_at DESC") }

scope :upcoming_birthday, { where('MONTH(birthday) = ? AND DAY(birthday) = ?', 1.days.from_now.month, 1.days.from_now.day).order("created_at DESC") }
Run Code Online (Sandbox Code Playgroud)