activerecord:检查列的第一个X字符

时间:2013-03-03 22:15:55

标签: ruby-on-rails activerecord

我想在我的模型中直接检查数字的前两个字符。首先,我定义当前登录用户的数量(设计):

user_number = current_user.number.first(2)

然后我想取这个值并在“数字”mobel中的where语句中检查它,所以我尝试了这个

@numbers = Number.where(:number_value.first(2) => user_number)

显然与

相同
@numbers = Number.where(:number_value.first(2) => current_user.number.first(2))

不,这不起作用。

如何查看模型中:number_value列的前2个字符? 任何帮助表示赞赏。

非常感谢。

2 个答案:

答案 0 :(得分:2)

解决方案(SQLite)

@numbers = Number.where("number_value like '" + current_user.number.first(2) + "%'")

因为这不是延迟加载,我不相信它是最聪明的解决方案。如果你知道更好的话,如果你能分享的话会很酷吗

答案 1 :(得分:1)

首先,您应该阅读ActiveRecord query guide。我还想象你有更直接的方式来实现你的目标。

但是,要回答您的具体问题,这里有一种适用于Postgresql的方法。

Number.where("number_value::text like ?", current_user.number.to_s[0,2] + "%")