Rails 3查询帮助

时间:2011-08-04 23:37:08

标签: ruby-on-rails ruby ruby-on-rails-3 activerecord

如何在查询中使用LIKE?我想这样做的原因是因为我有这个查询检查以确保表单类型和状态是正确的,但我希望它不区分大小写。这就是我所拥有的

@fields = Field.where(:form_type => 1, :state => "Alaska")

另外如何才能使form_type = 1 OR form_type = *仍然返回结果?

3 个答案:

答案 0 :(得分:1)

您必须使用以下格式:

@fields = Field.where(:form_type => 1).where("state LIKE 'Alaska'")

答案 1 :(得分:1)

如果您不喜欢在代码中编写原始SQL,但希望在查询中使用LIKE子句,则squeel gem非常好。 http://metautonomo.us/projects/squeel/

我使用了MySQL和PostreSQL的gem,它生成了正确的SQL(用于MySQL的LIKE和用于Postgres的ILIKE)。你的squeel查询看起来像这样:

@fields = Field.where{(form_type.in [1,2,3]) & (state =~ 'Alaska'")} 

答案 2 :(得分:0)

如果您希望它不区分大小写并且allow form_type to be 1 or 3,您可以这样做:

@fields = Field.where(:form_type => [1,3]).where("LOWER(state) = 'alaska'")

或者,如果你喜欢大喊大叫(谁不喜欢偶尔大喊一声?):

@fields = Field.where(:form_type => [1,3]).where("UPPER(state) = 'ALASKA'")

单个.where调用与AND结合使用,获得一致案例行为的最可靠方法是自行完成。