0

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

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 个字符?任何帮助表示赞赏。

非常感谢。

4

2 回答 2

2

解决方案(SQLite)

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

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

于 2013-03-03T23:48:38.987 回答
1

首先,您应该阅读ActiveRecord 查询指南。我还想象有一种更直接的方式可以让您实现目标。

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

Number.where("number_value::text like ?", current_user.number.to_s[0,2] + "%")
于 2013-03-03T22:30:54.127 回答