我有一个表像这样的“捆绑”Rails的加入 - 在同年龄组选择用户
Bundle.joins("inner join users on users.id=bundles.user_id").where("users.first_name = ?", first_name).where("users.last_name = ?", last_name).where("users.age_group = ?", age_group)
所以,在这里,我们正在根据匹配用户的所有包(由表中的非列比较) 。
这里,firstname,lastname是'users'表上的列。
但age_group不是列,它是从dob(column)计算的模型方法。
如何做到这一点?
AGEGROUPS = { 'teen' => 13..18, 'aboveteen' => 19..30, 'above30' => 31..40 }
def age_group #a model method of user.rb
age = get_age(self.birthdate)
User::AGEGROUPS.each do |g|
if age.between?(g[1].first, g[1].last)
return g[0]
end
end
end
def get_age
return unless birthdate
now = Time.now.utc.to_date
now.year - birthdate.year - (birthdate.to_date.change(:year => now.year) > now ? 1 : 0)
end
让我知道更多的信息。
那么你如何计算你的'age_group'?你将不得不用SQL语句重写它。 – 2014-09-03 09:37:55
@MarekLipka你可以请你这样做。我不知道该怎么做。我会用年龄组模型方法更新问题。 – user2349115 2014-09-03 09:38:42