@user_id = params[:user_id]
@picture = Picture.scoped
if @user_id.present?
@picture = @picture.where("user_id not in (?)", params[:user_id])
end
@picture = @picture.rand(@picture.count).first
respond_to do |format|
format.html { redirect_to(@picture) }
format.json { render :json => @picture }
end
我收到以下错误: PicturesController#next中的NoMethodError 私有方法`rand'调用[]:ActiveRecord :: Relation
而不是
@picture = @picture.rand(@picture.count).first
我也试过
@picture = Picture.offset(rand(Picture.count)).first
并改为收到此错误:
在PictureController#next 中的ActiveRecord :: StatementInvalid
Mysql2 ::错误:您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以便在第1行的“0.6704131293122307”附近使用正确的语法:SELECT pictures
。* FROM pictures
LIMIT 1 OFFSET 0.6704131293122307
我做错了什么,或者如何从结果数组中获取随机记录?提前谢谢。
答案 0 :(得分:3)
将rand结果转换为整数,如下所示:
@picture = Picture.offset(rand(Picture.count).to_i).first
答案 1 :(得分:2)
在ruby 1.9.2中,您可以这样做:
@picture.sample