gpt4 book ai didi

ruby-on-rails - 如何在 Rails 3 事件记录中链接查询

转载 作者:数据小太阳 更新时间:2023-10-29 06:55:17 26 4
gpt4 key购买 nike

我需要根据参数数据添加条件。

@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])

这样您就可以再次使用该方法,改进它,并针对它编写速度(更高)测试。

关于ruby-on-rails - 如何在 Rails 3 事件记录中链接查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9970300/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com