我正在研究如何将find的不推荐使用(在Rails 3.1中)更新为活动记录查询接口3.0。
我从一向优秀的RailsCasts 中了解到,find调用需要重写。
但是,我不清楚是否仍然可以使用该结构,
Products.find_all_by_available(true) # find specified via method used
# ^ not sure what the name for that convention is
...under Rails 3.2,或者这段代码也需要用新的格式重写吗?
谢谢。
在这种情况下,我只需要从特定的活动记录查询响应中获取几条记录。
@annotations = Annotations.select('*', ROW_NUMBER() OVER (PARTITION BY column_a) ORDER BY column_b)
上面是@annotations是活动记录响应的查询,我想应用下面的逻辑。是否有更好的方法以rails方式编写下面的逻辑?
with some_table as
(
select *, row_number() over (partition by column_a order by column_b) rn
fro
我在rails的jquery自动完成插件中查看了这段代码。在第12行中,"items“被设置为一个作用域对象。然后在接下来的几行中,作用域对象似乎被重新分配了几次。
当我运行代码时,似乎只进行了一个查询,这是所有作用域的总和。(这很好,只是不确定为什么)。这是否意味着作用域对象会累积作用域,直到方法执行结束?或者,活动记录只是通过等待收集所有查询来最小化所需的查询数量来优化性能……帮我理解一下:):
def get_autocomplete_items(parameters)
model = parameters[:model]
term = paramete
我是Rails新手,在编写活动记录查询时,我注意到正在检索列的all关联表。我想告诉活动记录哪些字段应该从哪些表中检索。怎么做呢?
我的模型和它们的联系如下:
class User < ActiveRecord::Base
has_one :profile
has_many :comments
has_many :posts
end
class Profile < ActiveRecord::Base
belongs_to :user
end
class Comment < ActiveRecord::Base
belongs_to :user
b
我有一个简单的查询,如下所示:
$category = Category::with('translation')
->with(['childCategories' => function ($query) {
$query->active();
}])
->where('id', $id)->first();
范围和关系:
public function scopeActive($query)
{
re
有一个域:example.gov.en
及其子域:subdomain.example.gov.en
当我把邮件发送到user1@example.gov.en时--没关系,很管用。但是,当我向user2@subdomain.example.gov.en发送邮件时,它会产生错误:
error while sending email: The following addresses had permanent fatal errors, reason: 550 user2@subdomain.example.gov.en recipient unknown
邮件服务器的IP地址对于域和子域是相同
我有这个优秀的gem 在我的应用程序中工作得很好,但我需要对活动记录查询的结果进行稍微不同的排序。
例如,使用rails控制台
$> Person.near('London',10)
生成一个长SQL查询(不相关),后跟
ORDER BY distance ASC
这给出了一个很好的有序列表,从最近到最远(最多10英里)。现在如果我这样做
$> Person.near('London',10).order('price_per_hour')
该查询的后缀是
ORDER BY distance ASC, price_per_hour
我
我尝试在Rails 3的Arel和/或Active Record中嵌套SELECT查询,以生成以下SQL语句。
SELECT sorted.* FROM (SELECT * FROM points ORDER BY points.timestamp DESC) AS sorted GROUP BY sorted.client_id
可以通过执行以下操作创建子查询的别名
points = Table(:points)
sorted = points.order('timestamp DESC').alias
但是,我被困在如何将它传递到父查询中(调用#to_sql,这听起来很难看
我正在尝试从一个表中获取唯一的记录,基于类别的column.This查询给出那些唯一的记录,这已经在MYSQL上测试过了。但我想知道如何在Rails中编写与命名作用域相同的东西。谁能告诉我如何在Rails 5应用程序中编写以下查询的作用域: SELECT * FROM t where id = (select min(id) from t t2 where t2.category = t.category);
如何在rails活动记录样式中编写此查询?
select distinct listmonth,
(select count(1) from listing where listmonth between dateadd(month, -3, l.listmonth) and dateadd(month, -1, l.listmonth)) as cnt
from listing l
group by listmonth
order by listmonth
目前,在保存时,我正在尝试检查录制的内容是否属于特定的“范围”。这个“作用域”实际上只是.where调用的一些已保存的参数。此外,对于这个“作用域”,我只检查对象的值,而不检查它与数据库中其他对象的关系,所以如果这有意义的话,查询数据库将总是过度删除。
我只能想出下面的解决方案
begin
result = self.class.where(scope).find(self.id)
rescue
result = false
end
这样做的问题是,即使我已经有了记录,我也必须查询数据库,而且我不仅要在保存之前运行它,还要在保存之后运行它,以检查它的值和保存后的值,因为如果更新版本没