这是我的User对象及其属性:
ruby-1.9.2-p0 > User
=> User(id: integer, email: string, encrypted_password: string, password_salt: string, reset_password_token: string, remember_token: string, remember_created_at: datetime, sign_in_count: integer, current_sign_in_at: datetime, last_sign_in_at: datetime, current_sign_in_ip: string, last_sign_in_ip: string, username: string, first_name: string, last_name: string, created_at: datetime, updated_at: datetime, invitation_token: string, invitation_sent_at: datetime, plan_id: integer, current_state: string, confirmation_token: string, confirmed_at: datetime, confirmation_sent_at: datetime, space_used: integer, failed_attempts: integer, unlock_token: string, locked_at: datetime, trial_end_date: date, active_subscription: boolean)
我的User.rb
模型中定义的自定义方法是:
def trial_will_almost_end?
if (self.trial_end_date - Date.today <= 3)
return true
else
return false
end
end
基本上我想要做的就是搜索trial_will_almost_end
返回true的所有用户。
我还想搜索为此方法返回true的所有用户:
def has_trial_expired?
if (self.trial_end_date <= Date.today)
return true
else
return false
end
end
这一切都要在Rails 3中完成。
感谢。
答案 0 :(得分:1)
ActiveRecord是一个数据库查询接口,因此基本上每个方法最后都会分解为SQL。在您的情况下,您希望在数据库中执行ruby函数,除非您获取记录然后单独循环它们,否则这是不可能的。
但是你可以使用sql“where”子句获取你的记录(注意:可能不是正确/最有效的语法):
User.find :all, :conditions => ["TO_DAYS(trial_end_date) - TO_DAYS(NOW()) <= 3"]