相关疑难解决方法(0)

Rails 3/Ruby:ActiveRecord查找方法IN条件数组到参数单引号问题

我在微博模型上创建了一个方法,它采用了一组user_ids.在这个方法中,我使用以下'find'方法为数组中的所有用户提取所有帖子.

find(:all, :conditions => ["user_id IN (?)", args.join(',')])
Run Code Online (Sandbox Code Playgroud)

但是,当ActiveRecord为此查询生成SQL时,它以单引号括起逗号分隔的Ids列表.这会导致查询仅为单引号内的第一个数字而不是所有数字提取帖子.

SELECT `microposts`.* FROM `microposts` WHERE (user_id IN ('3,4,5')) ORDER BY microposts.created_at DESC
Run Code Online (Sandbox Code Playgroud)

查询应该看起来像这样才能正常工作,但我无法弄清楚如何让Ruby将数组转换为没有引号的昏迷分隔列表,我知道它必须是简单的东西,我只是想念它并且可以'在Google上找到修复此问题的任何内容.我发现的所有帖子都使用相同的.join(',')方法来对齐Array.

SELECT `microposts`.* FROM `microposts` WHERE (user_id IN (3,4,5)) ORDER BY microposts.created_at DESC
Run Code Online (Sandbox Code Playgroud)

还有一个事实是帮助你弄清楚我的问题是我正在以下面的方式构建我传入方法的数组.不确定这是否会影响事情.

ids = Array.new
ids.push(current_user.id)
ids = ids + current_user.friends.map(&:id)
ids = ids + current_user.reverse_friends.map(&:id)
Run Code Online (Sandbox Code Playgroud)

在此先感谢能帮我恢复工作的人;)

ruby activerecord ruby-on-rails-3

30
推荐指数
2
解决办法
3万
查看次数

标签 统计

activerecord ×1

ruby ×1

ruby-on-rails-3 ×1