Ruby on rails activerecord:检查列的前X个字符

Ruby on rails activerecord:检查列的前X个字符,ruby-on-rails,activerecord,Ruby On Rails,Activerecord,我想在我的模型中直接检查数字的前两个字符。首先,我定义当前登录用户(设备)的编号: 然后我想取那个值并在“number”mobel中的where语句中检查它,所以我尝试了这个方法 @numbers = Number.where(:number_value.first(2) => user_number) 这显然与 @numbers = Number.where(:number_value.first(2) => current_user.number.first(2)) 不,那不

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

然后我想取那个值并在“number”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个字符? 感谢您的帮助


非常感谢。

首先,您应该阅读。我还可以想象,对于你来说,有一种更直接的方式来实现你的目标

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

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

首先,你应该阅读这本书。我还可以想象,对于你来说,有一种更直接的方式来实现你的目标

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

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

因为这不是懒惰加载,我还不相信这是最聪明的解决方案。如果您知道更多,如果您可以共享解决方案(SQLite),那就太酷了


因为这不是懒惰加载,我还不相信这是最聪明的解决方案。如果你知道的更好,如果你能分享看起来不错的,那就太酷了,但是sqlite呢?在dev.postgres上仅在生产上使用它。当然,我读了ActiveRecord指南,但没有找到太多:/你可能应该更仔细地阅读,熟悉ActiveRecord和ruby的基础知识。我让它工作了(见上文)。当推到heroku(使用postgres)时,我发现我的sqlite语句显然不起作用。用你的就行了。但我如何告诉我的脚本“在开发中使用此语句,在生产中使用此语句”?这看起来不错,但sqlite呢?在dev.postgres上仅在生产上使用它。当然,我读了ActiveRecord指南,但没有找到太多:/你可能应该更仔细地阅读,熟悉ActiveRecord和ruby的基础知识。我让它工作了(见上文)。当推到heroku(使用postgres)时,我发现我的sqlite语句显然不起作用。用你的就行了。但我如何告诉我的脚本“在开发中使用此语句,在生产中使用此语句”?
@numbers = Number.where("number_value like '" + current_user.number.first(2) + "%'")