在SQL文的查询条件中经常会用得到关键字in,例如:
SELECT * FROM accounts WHERE nick_name = 'nicknm' AND id IN ("1","2");
此时如果利用Rails的find方法,代码如下所示:
require "rubygems"
require "active_record"
module ActiveRecord
class Base
def self.each_cons(n)
offset = 0
loop do
size = yield(offset)
break if size < n
offset += n
end
end
end
end
ActiveRecord::Base.establish_connection(
:adapter => 'mysql',
:host => 'localhost',
:database => 'myapp_development',
:username => 'my',
:password => '123'
)
class Account < ActiveRecord::Base
establish_connection(
:adapter => 'mysql',
:host => 'localhost',
:database => 'myauth_development',
:username => 'my',
:password => '123'
)
end
#condns 是个数组
condns = []
condns << "1"
condns << "2"
#非常值得注意的是:此时传给in(即第二个?)的参数一定要是数组类型的,
#否则返回的不是想要的结果。
#举例说明:如果将condns设置成字符串类型→"1,2",那么下述find方法解析完的
#SQL是SELECT * FROM accounts WHERE nick_name = 'nicknm' AND id #IN ("1,2");
#而我们期待的结果应该是:
#SELECT * FROM accounts WHERE nick_name = 'nicknm' AND id IN
#("1","2");
accounts = Account.find(:all,
:conditions => ["nick_name = ? and id in (?)", "nicknm", condns],
:order => 'id asc',
:limit => 1000)
分享到:
相关推荐
在 Rails 2.x 中,许多使用哈希参数的查询方法如 `:conditions`, `:include`, `:joins` 等在 Rails 3.1 中被标记为过时,虽然在3.1版本中仍然可用,但计划在 Rails 3.2 中完全移除。这些变化主要是为了引入一个新的...
在Rails中,`find` 方法有许多变体,其中之一就是 `find(:first)`,用于查询符合条件的第一条记录。结合 `:conditions` 参数,我们可以指定查询条件。 **示例代码:** ```ruby mobile_info = MobileInfo.find(:...
在处理条件查询时,旧的`:conditions`参数变成了`where`,例如`Article.find(:all, :conditions => ["published_at , Time.now], :include => :comments)`在Rails 3中应写作`Article.where("published_at , Time.now...
cache-money, 一个通过Cacheing库编写 什么是高速缓存缓存是一个通过缓存库进行ActiveRecord的写和...阅读:查询类似 User.find(:all, :conditions =>.. .) 首先查找 Memcached,然后在数据库中查找查询的结果。 如果缓
9. **使用防止SQL注入的库**:例如,可以使用`ActiveRecord::Sanitization`模块的`sanitize_sql_array`或`sanitize_sql_for_conditions`方法。 通过了解和应用这些实践,开发者可以在开发Ruby on Rails应用时有效...
@public_posts = Post.find(:all, :conditions => {:state => 'public'}, :limit => 10, :order => 'created_at desc') @draft_posts = Post.find(:all, :conditions => {:state => 'draft'}, :limit => 10, :...
对 ActiveRecord 查找器的正则表达式支持。 安装 Wherex 是 ,这意味着我们将始终指示向后不兼容的更改与主要版本碰撞,因此您可以在Gemfile使用它: gem 'wherex' , '~> 1.0' 仅适用于 Rails >= 3.1 例子 # ...
在Rails框架中,`method_missing`被广泛用于 ActiveRecord 模型中,以支持动态查找方法。例如,如果你有一个名为`User`的模型,并且其中包含一个`email`字段,那么你可以通过以下方式查询用户: ```ruby User.find_...