我想在我的模型中直接检查数字的前两个字符。首先,我定义当前登录用户的数量(设计):
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个字符? 任何帮助表示赞赏。
非常感谢。
答案 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] + "%")