ruby-on-rails – 如何链接rails 3活动记录中的查询
发布时间:2020-12-16 19:11:15 所属栏目:百科 来源:网络整理
导读:我需要根据params数据添加条件. @users = User.where('id',params[:id]) unless params[:id].nil?@users = User.where('email',params[:email]) unless params[:email].nil?@users = User.limit(10) 但由于某种原因它不起作用. 谢谢 解决方法 你的每个语句都
我需要根据params数据添加条件.
@users = User.where('id',params[:id]) unless params[:id].nil? @users = User.where('email',params[:email]) unless params[:email].nil? @users = User.limit(10) 但由于某种原因它不起作用. 解决方法
你的每个语句都替换了@users变量,并且当ActiveRecord懒惰地评估每个语句时,前两个语句永远不会被调用.
如果您想维护三个单独的查询并以这种方式构建,您可以执行以下操作: @users = User.limit(10) @users = @users.where('id',params[:id]) if params[:id] @users = @users.where('email',params[:email]) if params[:email] 它不是最漂亮的,但它会起作用.但是,我建议将其保留为单个方法调用并在模型中定义它. # In the model def self.by_id_and_email(id,email) users = limit(10) users = users.where('id',id) if id.present? users = users.where('email',email) if email.present? users end # In the controller / out of the model User.by_id_and_email(params[:id],params[:email]) 这样,您可以再次使用该方法,对其进行优化,并针对它编写速度(ier)测试. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |