Questions tagged «activerecord»

Active Record是一种将域逻辑与单个对象中的存储抽象相结合的模式。使用此标记可以查询有关模式的问题,可以使用[rails-activerecord]来查询有关Rails ORM框架的问题。

6
在Rails迁移中将一列更新为另一列的值
我在Rails应用程序中有一个表格,里面有成千上万条记录,而且它们只有一个created_at时间戳。我要添加编辑这些记录的功能,因此我想updated_at在表中添加时间戳。在添加列的迁移中,我想更新所有行以使其新的updated_at匹配旧的created_at,因为这是Rails中新创建的行的默认值。我可以做一个find(:all)并遍历记录,但是由于表的大小,要花几个小时。我真正想做的是: UPDATE table_name SET updated_at = created_at; 在使用ActiveRecord而不是执行原始SQL的Rails迁移中,有没有更好的方法呢?


10
Rails Active Record查找(:all,:order =>)问题
我似乎无法一次使用ActiveRecord :: Base.find选项:order多个列。 例如,我有一个带有日期和出席列的“显示”模型。 如果我运行以下代码: @shows = Show.find(:all, :order => "date") 我得到以下结果: [#<Show id: 7, date: "2009-04-18", attending: 2>, #<Show id: 1, date: "2009-04-18", attending: 78>, #<Show id: 2, date: "2009-04-19", attending: 91>, #<Show id: 3, date: "2009-04-20", attending: 16>, #<Show id: 4, date: "2009-04-21", attending: 136>] 如果我运行以下代码: @shows = …

4
在Rails 4中,不赞成使用Model.scoped,但是Model.all不能替代它
Model.scoped现在不建议使用Rails 4 。 DEPRECATION WARNING: Model.scoped is deprecated. Please use Model.all instead. 但是,有一个区别Model.scoped和Model.all,那就是scoped.scoped返回一个范围,而all.all运行查询。 在Rails 3上: > Model.scoped.scoped.is_a?(ActiveRecord::Relation) => true 在Rails 4上: > Model.all.all.is_a?(ActiveRecord::Relation) DEPRECATION WARNING: Relation#all is deprecated. If you want to eager-load a relation, you can call #load (e.g. `Post.where(published: true).load`). If you want to get an array of …

7
删除基于多个列的重复记录?
我正在使用Heroku托管我的Ruby on Rails应用程序,由于某种原因,我可能会有一些重复的行。 有没有一种方法可以基于2个或更多条件删除重复记录,但只保留该重复集合的1条记录? 在我的用例中,我的数据库中有汽车的品牌和型号关系。 Make Model --- --- Name Name Year Trim MakeId 我想删除所有具有相同“名称”,“年份”和“修剪”的Model记录,但保留其中1条记录(这意味着,我需要该记录,但只记录一次)。我正在使用Heroku控制台,因此可以轻松运行一些活动记录查询。 有什么建议么?



7
Rails-最佳实践:如何创建依赖的has_one关系
您能告诉我创建has_one关系的最佳实践是什么吗? fe,如果我有一个用户模型,并且必须有一个配置文件... 我该怎么办呢? 一种解决方案是: # user.rb class User << ActiveRecord::Base after_create :set_default_association def set_default_association self.create_profile end end 但这似乎并不干净……有什么建议吗?

4
Rails ActiveRecord如何在没有多个查询的情况下链接“ where”子句?
我是一名PHP开发人员,了解Ruby on Rails的精湛知识,我喜欢ActiveRecord,并且发现了一些非常有趣的东西,那就是ActiveRecord方法如何检测方法链的末端以执行查询。 @person = Person.where(name: 'Jason').where(age: 26) # In my humble imagination I'd think that each where() executes a database query # But in reality, it doesn't until the last method in the chain 此法术如何运作?

5
ActiveRecord:如何获取可以批量分配的模型的所有属性?
我想要一个可以批量分配的所有属性名称的列表。对于自定义表单构建器,我需要此设置,该表单构建器默认不会添加无法批量分配的输入字段。 例如,如果我有以下模型: class Post < ActiveRecord::Base attr_protected :account belongs_to :author validates_presence_of :title, :author end 结果我希望有[:author, :title]。

2
有关空的belongs_to关联的最佳实践
想象一下以下情况: 我有一个dog模特和一个house模特。狗可以属于一所房子,而房子可以有许多狗,因此: Class Dog < ActiveRecord::Base belongs_to :house end Class House < ActiveRecord::Base has_many :dogs end 现在,想象一下我也想创造没有房子的狗。他们不属于房屋。我仍然可以使用该关系结构,而:house_id在创建它时不通知它吗? 有更好的做法吗? 观察:我用这个比喻简化了我的问题,但是我的真实情况是:我有一个模型,用户可以生成它的实例。他还可以创建这些实例的集合,但可以将实例保留在集合之外。

3
Rails ActiveRecord:以LEFT JOIN代替INNER JOIN联接
我有这个代码 User.find(:all, :limit => 10, :joins => :user_points, :select => "users.*, count(user_points.id)", :group => "user_points.user_id") 生成以下sql SELECT users.*, count(user_points.id) FROM `users` INNER JOIN `user_points` ON user_points.user_id = users.id GROUP BY user_points.user_id LIMIT 10 除了User.find_by_sql手动键入查询外,是否可以通过其他方式使LEFT JOIN代替INNER JOIN ?

1
Ruby Activerecord IN子句
我想知道是否有人知道如何在activerecord中执行“ IN”子句。不幸的是,“ IN”子句几乎不可谷歌搜索,所以我必须在这里发布。基本上,我想回答这样一个问题:“给我所有这些宿舍中的大学生,这些宿舍的id都在此数组[id array]中。” 我知道在给定单个宿舍ID的情况下如何编写查询,但在给定ID数组的情况下我不知道如何执行查询。 任何帮助是极大的赞赏。我确定这是某处问题的转发,因此一旦找到答案/更好的搜索字词,我将删除该问题。

10
如何使用CodeIgniter的ActiveRecord选择列值不为空的行?
我正在使用CodeIgniter的Active Record类来查询MySQL数据库。我需要选择表中没有将字段设置为NULL的行: $this->db->where('archived !=', 'NULL'); $q = $this->db->get('projects'); 那只会返回以下查询: SELECT * FROM projects WHERE archived != 'NULL'; 该archived字段是一个DATE字段。 有没有更好的方法来解决这个问题?我知道我可以自己编写查询,但是我想在整个代码中坚持使用Active Record。

2
ActiveRecord或查询哈希符号
我知道有3种主要符号为whereActiveRecord方法提供参数: 纯弦 数组 杂凑 指定and的where方法是直截了当: # Pure String notation Person.where("name = 'Neil' AND age = 27") # Array notation Person.where(["name = ? AND age = ?", 'Neil', 27]) # Hash notation Person.where({name: "Neil", age: 27}) 指定or相同的where方法让我很困惑哈希语法。可能吗? # Pure String notation Person.where("name = 'Neil' OR age = 27") # Array notation …

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.