标签: activerecord

Rails 从控制器过滤记录?

我的 Calls 控制器中有以下代码:

@calls = Call.where(:destination => ("1234"),
                    :destination => ("5678"),
                    :destination => ("91011"))
Run Code Online (Sandbox Code Playgroud)

虽然上面的代码有效,但它只列出目的地为 91011 的记录。我想以某种方式显示目的地字段与任何数字匹配的所有记录。

我不确定是否应该为每个过滤器添加一个 .where 语句。

任何帮助,将不胜感激!

这与我不久前问的另一个问题非常相似。但是,这是为了进一步过滤查找条件而不是扩大范围。

ruby activerecord ruby-on-rails

0
推荐指数
1
解决办法
501
查看次数

如何在 CodeIgniter 中使用 Active Record 类从多个表中获取数据

我正在尝试学习如何从多个表中提取数据并将它们放入一个变量中并将它们返回给我的控制器。

我可以从这样的一张表中获取信息:

            $this->db->select('first_name, last_name');
            $this->db->from('people');
            $this->db->where('first_name', $firstname);
            $this->db->where('last_name', $lastname);
            $result = $this->db->get();
Run Code Online (Sandbox Code Playgroud)

但我对如何从另一个表中获取数据并将它们与包含更多用户输入的其他变量进行匹配感到困惑。

我已经阅读了 CI 网站上的 Active Record 文档,但我发现唯一可能是我正在寻找的内容是 join() 查询,但我不知道如何使用它,这个例子没有帮助在网站上,因为我不明白这一点:

$this->db->join('comments', 'comments.id = blogs.id');
Run Code Online (Sandbox Code Playgroud)

“评论”是否意味着表格“评论”?如果您将一个变量与 comments.id 进行比较,您是否必须像这样在单引号之外包含该变量:'comments.id =' $blogid

或者我可以这样做:从一张表中查询并将这些结果放入一个变量中,如下所示:

$result1 = $this->db->get();
Run Code Online (Sandbox Code Playgroud)

然后再次从另一个表中进行另一个查询并将其放入

$result2
Run Code Online (Sandbox Code Playgroud)

那我可以说: $query = $result1 + $result2;

那可能吗?

如果有人可以确认此信息/帮助我,我将不胜感激。谢谢

activerecord codeigniter

0
推荐指数
1
解决办法
6123
查看次数

Rails 4:带偏移量的 ActiveRecord 删除

我有一个程序每五分钟向我的 Rails 应用程序提交一个 HTTP 请求。这些记录在 ID 和 created_at 上有一个索引,以相反的顺序显示。由于这些状态更新的频率,我只想存储最近的十个。在研究如何执行此操作时,我认为偏移量非常适合检索然后删除数据集。尽管在我的 rails 控制台测试中,我无法说服 ActiveRecord 它想要以这种方式工作(它删除所有记录,而不仅仅是未包含在偏移量中的记录)。

有没有更有效的方法来做我想在我的控制器中做的事情?有没有办法使用 ActiveRecords 删除带有偏移量的记录?如果没有,那么做这件事的理想方法是什么?

def create
    env = Env.find_by_name(params[:updateresult][:env_name])
    @updateresult = env.updateresults.build(updateresult_params)
    respond_to do |format|
        if @updateresult.save
            format.json { render json: @updatresults, status: :created}
            #env.updateresults.where(:id => env.updateresults.offset(10).pluck(:id)).delete_all
        else
            format.json { render json: @updatresults.errors, status: :unprocessable_entity }
        end
    end
end
Run Code Online (Sandbox Code Playgroud)

编辑:改变大卫的答案,在上面的代码中提出注释掉的答案

ruby activerecord ruby-on-rails

0
推荐指数
1
解决办法
639
查看次数

从 Codeigniter 中的 Active record 获取 SUM 和 group 字段的结果

我需要在 Codeigniter 中构建此查询,但我不知道如何获得 SUM 的结果:

SELECT 
    description, SUM(amount)
FROM
    PAYMENT
WHERE
    (date_payment between '2014-02-01 00:00:00' AND '2014-02-28 23:59:59')
GROUP BY description;
Run Code Online (Sandbox Code Playgroud)

我试图得到这样的结果:

$qwer = $this->db->query("
    SELECT description, SUM(amount)
    FROM PAYMENT
    WHERE (date_payment between '$min_date' AND '$max_date')
    GROUP BY description;");

$i = 0;
foreach ($qwer->result() as $payment) {
    $det_payment[$i] = array(
        'description'=>$payment->description,
        'amount'=>$payment->amount
    );
    $i++;
}
Run Code Online (Sandbox Code Playgroud)

当然 "$payment->amount" 是错误的,但是如果我为 SUM 使用别名,则该模型不起作用。

编辑:现在我可以在描述或总和之间进行选择,但我不能同时使用 select 和 select_sum

$this->db->select('description');
//$this->db->select_sum('amount', 'amount');
$this->db->where('date_payment >=', $min_fecha);
$this->db->where('date_payment <=', $max_fecha);
$this->db->group_by("description");
$qwer = $this->db->get('PAYMENT');
Run Code Online (Sandbox Code Playgroud)

activerecord codeigniter

0
推荐指数
1
解决办法
3万
查看次数

如何从模块中访问顶级模型?

在这个应用程序中,有两个非常相似的模型:/app/models/material.rbapp/models/projects/material.rb。该projects命名空间是部分在本申请中所存在的模块。

在里面,/app/controllers/projects/materials_controller我试图根据根命名空间的材质属性更新材质。(这是一种同步,更新成本。)

然而,在这个控制器的范围内,Material实际上是Projects::Material. 我需要Material在这一点上访问。

我怎样才能做到这一点?

activerecord module ruby-on-rails

0
推荐指数
1
解决办法
207
查看次数

Rails 活动记录查询获取最常见的对象

我正在尝试查询模型以获取迄今为止我拥有的某个属性的最常见字段

 Person.maximum('age')
Run Code Online (Sandbox Code Playgroud)

但是我如何查询一组最常见的 6 个年龄。任何帮助将非常感激。谢谢

ruby mysql activerecord ruby-on-rails

0
推荐指数
1
解决办法
1692
查看次数

如何仅在 Rails 中验证用户输入的英文字母?

我在 Rails 应用程序上进行试验。我想仅在 rails 中验证用户输入的英文字母字符。假设我们有一个用户填写的注册表单Name, Address, Email address。但我希望他们Address form英文字母填写,因为他们中的一些人可能会不小心用中文字母填写,这不是我们想要的。

我们可以通过正则表达式解决这个问题 吗?如果是这样,请指导我写这三个案例:(非常欢迎任何其他方式)

1:验证“仅英文字母”

2:验证“不允许使用中文字母”

您的帮助将不胜感激!

ruby validation activerecord ruby-on-rails rails-activerecord

0
推荐指数
1
解决办法
2608
查看次数

Rails Activerecord .joins 上的列名不明确

这是我的代码。如果我在 :search 字段中有内容,或者在 :supplier 字段中有内容,它就可以正常工作,但是如果我在这两个字段中都有内容,我会得到“不明确的列名 'NUMBER'”。有没有办法选择AS之类的?

@date_from = params[:date_from]  ||     Date.today.beginning_of_month.strftime('%m/%d/%Y')
@date_to = params[:date_to] ||  Date.today.strftime('%m/%d/%Y')
q = "%#{params[:search]}%"

@products = Product.where("DISCONT = ? AND NONPRODUCT = ?" ,0,0)
@products = @products.where('NUMBER like ?' ,q) if params[:search].present?
@products = @products.joins(:supplier_items).where('SUPPLIER = ?' ,params[:supplier]) if params[:supplier].present?
@products = @products.paginate(page: params[:page], per_page: 25)
Run Code Online (Sandbox Code Playgroud)

ruby activerecord ruby-on-rails

0
推荐指数
1
解决办法
3201
查看次数

rails 查找包含特定单词的记录

我正在寻找一种方法来查找包含特定字符串的数据库中的所有条目。我知道可以遍历每个条目并查看字符串是否匹配,但随着数据库的增长,我宁愿不这样做。我想知道是否有 Rails 的方法。就像是

Table.where("content containsWord ?", "string")
Run Code Online (Sandbox Code Playgroud)

因此,函数查找包含特定字符串的所有记录。有谁知道这样做的方法?

更新

Rails 的副本:如何通过包含特定字符串的字段查找

database activerecord ruby-on-rails

0
推荐指数
1
解决办法
2872
查看次数

在删除并创建新的作者记录后,Rails更新books表中的author_id

这是Author模型和Book模型

class Author < ApplicationRecord
  has_many :books, dependent: :destroy
end

class Book < ApplicationRecord
  belongs_to :author
end
Run Code Online (Sandbox Code Playgroud)

我创建了2位作者(author1和author2),并为每位作者添加了2本书。

之后,我删除了author1并创建了一个新作者(author3)。现在,我想给author3两本author1的书。

是否有ActiveRecord方法用新作者来更新书籍author_id?

ruby activerecord ruby-on-rails associations

0
推荐指数
1
解决办法
63
查看次数