Tag: activerecord

Rails:非id外键查找ActiveRecord

我希望ActiveRecord通过表中的非id列进行查找。 当我向你提供我的代码示例时,希望这很清楚。 class CoachClass < ActiveRecord::Base belongs_to :coach end class Coach ‘user_name’ end 当我做一个coach_obj.coach_classes ,这正确地触发了 SELECT * FROM `coach_classes` WHERE (`coach_classes`.user_name = 2) (2是教练的id ,这是我的问题。) 我想让它触发 SELECT * FROM `coach_classes` WHERE (`coach_classes`.user_name = ‘David’) (’David’是那个教练的user_name ) user_name是唯一的,并且存在于两个表中。 出于某种原因,我不希望在coach_classes表中有一个coach_id 。

如何在Rails中使用Active Record时指定Ruby正则表达式?

为了获得invoice_number是纯数字的所有工作,我做: Job.where(“invoice_number REGEXP ‘^[[:digit:]]+$'”) 是否可以通过在Ruby而不是MySQL中指定正则表达式来做同样的事情?

使用rails迁移创建缺少的自动增量属性

我正在编写一个迁移,将非rails应用程序转换为rails的正确格式 – 由于某种原因,其中一个表没有在id列上设置自动增量。 在迁移过程中是否有快速启用它的方法,可能使用change_column或其他东西?

如何根据查询插入多行?

我正在开发一个具有文件夹,组和权限的系统。 权限确定不同组在每个文件夹中可以执行的操作。 因此,每当我创建一个新组时,我想在每个文件夹的权限表中添加一条记录,描述新组在该文件夹中可以执行的操作。 目前我只是循环遍历系统中的所有文件夹并为每个文件夹添加权限记录: group = Group.create(params) Folder.all.each do |folder| Permission.create! do |permission| permission.folder = folder permission.group = group permission.can_create = true permission.can_read = true permission.can_update = true permission.can_delete = true end end 我不喜欢每次创建新组时都必须遍历所有记录的事实。 所以基本上我正在寻找一种使用ActiveRecord执行以下SQL的优雅方式。 INSERT INTO permissions (folder_id, group_id, can_creat, can_read, can_update, can_delete) SELECT id, #{group.id}, true, true, true, true FROM folders 我想我可以使用find_by_sql运行上面的查询,但这感觉不对,因为我是INSERTing ,而不是INSERTing […]

‘ActiveRecord :: Core :: ClassMethods.find’调用已被弃用

我正在使用RubyMine 2016.1,当我使用ActiveRecord的find(id)方法时,它向我显示了这个弃用警告:不推荐使用’ActiveRecord :: Core :: ClassMethods.find’调用,但是,在指南中 ,使用主键查找不推荐使用。

如何让Rails获得急切的负载计数?

这与一年前的一个问题有关。 我提出了一个开箱即用的问题示例,只要你有sqlite3可用: https : //github.com/cairo140/rails-eager-loading-counts-demo 安装说明(主分支) git clone git://github.com/cairo140/rails-eager-loading-counts-demo.git cd rails-eager-loading-counts-demo rails s 我在存储库中有更全面的文章,但我的一般问题是这个。 如何以最小化数据库查询的方式使Rails急切加载计数? 只要在关联上使用#count ,就会出现n+1问题,尽管在ActiveRelation中通过#includes(:associated)包含了该关联。 一个解决方法是使用#length ,但只有当它被调用的对象已被加载时才能正常工作,更不用说我怀疑它复制了Rails内部已经完成的东西。 此外,使用#length一个问题是,当开始时没有加载关联并且只需要计数时,它会导致不幸的过载。 从自述文件: 我们可以通过在posts数组上运行#length来避免这个问题(参见附录),这已经加载了,但是也可以随时获得数量。 它不仅更加一致; 它提供了一种访问路径,不一定需要加载post。 例如,如果你有一个部分显示计数,无论什么,但有一半的时间,部分是在加载post和一半时间没有调用,你面临以下情况: 使用#count n已加载post时的COUNT样式查询 n尚未加载post时的COUNT样式查询 使用#length 在已加载post时将其他查询归零 当post尚未加载时,n *样式查询 在这两种选择之间,没有主导选择。 但是修改#count来推迟#length或访问存储在幕后的其他方式的长度会很好,这样我们就可以得到以下场景: 使用修改后的#count 在已加载post时将其他查询归零 n尚未加载post时的COUNT样式查询 那么这里的正确方法是什么? 有没有我忽略的东西(非常非常可能)?

Rails ActiveRecord where或clause

我正在寻找一个ActiveRecord查询,这就是我在下面的内容。 不幸的是你不能像这样使用OR。 什么是最好的执行方式? category_ids是一个整数数组。 .where(:”categories.id” => category_ids).or.where(:”category_relationships.category_id” => category_ids)

Rails / ActiveRecord按特定值排序

在Rails 3.2中是否有任何方便的方法来通过将具有特定字段的特定值的记录移动到关系的前面来订购ActiveRecord关系? 例如,如果MyModel具有属性country ,我想将具有country=’Spain’记录的任何查询返回的关系排序到关系的前面。

ActiveRecord日期格式

我在Rails应用程序中遇到了日期格式的烦恼。 我在视图中有一个日期字段,我希望将其格式化为dd / mm / yy 。 这是用户期望输入日期的方式,而datepicker控件使用此格式。 但是,Active Record似乎期待mm / dd / yy 。 如果我输入01/03/2010 , 则会在2010年1月3日进入。 如果我输入25/03/2010 , 则会将其置为空 。 如何让ActiveRecord期待Her Majesties日期格式?

ActiveRecord SQL执行时间

如何在rails中获取SQL查询执行时间? 我可以在日志中看到时间,例如: Posting Load (10.8ms) SELECT “postings”.* FROM “postings” ORDER BY “postings”.”id” ASC LIMIT 1 但是,如何以编程方式获取该值(10.08)以在我的代码中进一步使用它?