Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 改进两个相似的查询_Ruby On Rails_Ruby_Ruby On Rails 4_Activerecord - Fatal编程技术网

Ruby on rails 改进两个相似的查询

Ruby on rails 改进两个相似的查询,ruby-on-rails,ruby,ruby-on-rails-4,activerecord,Ruby On Rails,Ruby,Ruby On Rails 4,Activerecord,我有以下疑问: initial_date = NewUser.joins(:interactions) .where('interactions.interaction_sub_type in (?)', types) .where('interactions.interaction_type in (?)', actions) .limit(1000).order('users.id asc').mini

我有以下疑问:

initial_date = NewUser.joins(:interactions)
               .where('interactions.interaction_sub_type in (?)', types)
               .where('interactions.interaction_type in (?)', actions)
               .limit(1000).order('users.id asc').minimum(:updated_at)

last_date = NewUser.joins(:interactions)
            .where('interactions.interaction_sub_type in (?)', types)
            .where('interactions.interaction_type in (?)', actions)
            .limit(1000).order('users.id asc').maximum(:updated_at)
除了
最小值
最大值

我正在尝试改进此代码,但不知道如何更改此代码。
我想到了类似的事情

base = NewUser.joins(:interactions)
                   .where('interactions.interaction_sub_type in (?)', types)
                   .where('interactions.interaction_type in (?)', actions)
                   .limit(1000).order('users.id asc')
initial_date = base.minimum(:updated_at)
但出于某种原因,这不起作用。AccVIECORD似乎执行了对<代码> BASE<代码>的查询,然后在<代码>初始日期> /代码>上执行。

< P>您是否考虑使用A:

可以像这样使用:

initial_date = NewUser.with_interactions(types, actions).minimum(:updated_at)
last_date    = NewUser.with_interactions(types, actions).maximum(:updated_at)
你是否考虑使用A:

可以像这样使用:

initial_date = NewUser.with_interactions(types, actions).minimum(:updated_at)
last_date    = NewUser.with_interactions(types, actions).maximum(:updated_at)

我已经很久没有在Rails上工作了,但我想尝试一下

NewUser.joins(:interactions)
       .select("MIN(updated_at) AS initial_date, MAX(updated_at) AS last_date")
       .where('interactions.interaction_sub_type in (?)', types)
       .where('interactions.interaction_type in (?)', actions)
       .limit(1000).order('users.id asc')

它将返回一个包含两列的结果,
initial\u date
last\u date
我已经很久没有在Rails上工作了,但我想试一试

NewUser.joins(:interactions)
       .select("MIN(updated_at) AS initial_date, MAX(updated_at) AS last_date")
       .where('interactions.interaction_sub_type in (?)', types)
       .where('interactions.interaction_type in (?)', actions)
       .limit(1000).order('users.id asc')

它将返回一个包含两列的结果,
initial\u date
last\u date

您的解决方案有什么问题?你有错误吗?你的解决方案有什么问题?你有什么错误吗?正确的和
Rails
的方法。这太完美了!我怎么没想过呢?正确而且
Rails
的方法。这太完美了!我怎么没想过呢?