Tag: activerecord

没有ActiveRecord :: Base的连接池

我正在尝试使用rails 4.2.6开发应用程序。 我正在尝试将postgres用于数据库。 服务器启动正常,但是当我尝试加载页面时,它会抛出“ActiveRecord :: Base没有连接池”错误。 会是什么呢? 编辑 pg gem无法正常工作。 我必须在启动服务器之前对其进行评论,然后在我的GemFile中取消注释。 我意识到我使用的是Ruby 2.3而不是Ruby 2.0(如预期的那样)。 我删除了ruby 2.3并在ruby 2.0环境下设置了所有内容。 它现在正常工作。 我曾经读过某个地方,在较新的Rails版本中有’pg’gem存在一些问题,要求人们使用’gem install pg –pre’代替安装gem。 我试过了,但后来我的应用程序在我的GemFile中需要’pg’gem,而且,上面提到的问题再次出现了。 这是我的database.yml文件的结果: default: &default adapter: postgresql encoding: unicode host: localhost username: ——- password: ——- pool: 5 development: <<: *default database: myDbName

MySQL复合索引中的键的高性能排序(WRT Rails多态关联和STI)

以前,我在ActiveRecord中询问了关于多态外键的复合索引的问题 。 我的问题的基础是我的理解,索引应该基于列的基数,并且在Rails的STI类型和多态_type列上通常具有相当低的基数。 接受我的问题的答案是正确的 – 将高基数_id列和低基数_type列编入索引是有价值的,因为它们一起具有高基数 – 我的下一个问题是:你应该如何订购你的化合物索引? [owner_id,owner_type]的索引首先放置具有较高基数的字段,而[owner_type,owner_id]将具有较高基数的字段放置在第二位。 使用前一个键的查询是否比使用后一个键的查询更高效,或者它们是否同样高效? 我问,因为这对我如何为服务STI模型的表订购复合键有特别的影响。 STI Rails查找器几乎总是查询类型列 – 这也是一个通常低基数的列。 因此,比其他索引更频繁地查询类型列。 如果更频繁地查询类型列,那么使用类型前导索引可能是有意义的,因为较少特定的查询可以利用索引的第一部分来产生性能提升。 但是,对于高度特定的查询而言,我不会因为性能的损害而小费。 利用索引的高基数部分。

Rails:has_many,但也有一个不同的名称

假设User有许多Document ,并且他们正在处理一个Document 。 我如何在rails中表示这个? 我想说current_user.current_document = Document.first (在文档前面有或没有current_)并且不要更改current_user.documents集合。 这就是我所拥有的: class Document < ActiveRecord::Base belongs_to :user end class User < ActiveRecord::Base has_many :documents has_one :document end 问题是,当我说current_user.document = some_document ,它会从current_user.documents删除以前存储在current_user.document中的文档。 这是有道理的,因为Document有has_one关系,但不是我想要的。 我如何解决它?

在Rails ActiveRecord中Upsert

ActiveRecord是否具有内置的upsertfunction? 我知道我可以自己写,但我显然不想,如果这样的事情已经存在。

Rails 3通过父关联排序

我在Rails 3中有一个相当直接的问题,我似乎无法找到答案: 说我有2个型号:客户,项目。 客户有很多项目项目属于客户 现在我想使用Active Record按“客户名称”对项目列表进行排序(使用ruby数组做这很容易,但我想一旦项目记录数量增加,这将会出现问题)。 我如何使用ActiveRecord进行此操作?

Rails 3 – 如何从具有订单的模型中获取行号

我正在整理一个具有排行榜概念的小应用程序。 基本上,模型只是一个player_name和一个current_score。 我想要做的是获得特定玩家的排名,并且考虑到新的分数一直在进行,它需要是动态的。 显然,我可以使用order by子句进行正常查找,然后我必须循环遍历每条记录。 当我有100,000行时,效率不高。 我应该采取什么方法的任何建议? 以下是表的迁移: class CreateScores < ActiveRecord::Migration def self.up create_table :scores do |t| t.string :player_name t.integer :current_score t.timestamps end end def self.down drop_table :scores end end 编辑作为一个例子,所以我有以下内容: Score.select(‘player_name, current_score’).limit(20) => [#, #, #, #, #, #, #, #, #, #, #, #, #, #, #, #, #, #, #, #] […]

rails对特定控制器和操作的ActiveRecordvalidation

是否可以在给定的控制器和操作上运行ActiveRecordvalidation。 例如,我有user_controller和signup_controller 我只需要在signup_controller #create action上运行密码必需的validation

如何在Rails模型的回调中访问params?

我有一个模型的回调,需要根据表单中输入的另一个字段创建一个依赖对象。 但是params在回调方法中是未定义的。 有没有其他方式来访问它? 从表单传递回调方法参数的正确方法是什么? class User < ActiveRecord::Base attr_accessible :name has_many :enrollments after_create :create_enrollment_log private def create_enrollment_log enrollments.create!(status: 'signed up', started: params[:sign_up_date]) end end

RoR:has_one“或其他”? (或者,没有inheritance的多态性。)

嘿所有,我对我的项目有一些有趣的要求。 我需要一个has_one关系,它是一个类或另一个类,但没有inheritance。 如果它是唯一的方法,我可以逃脱inheritance,但是两个相关记录具有完全不同的数据并且根本不相关。 我需要弄清楚的是以下内容。 # 1. Foo never belongs to anything. # 2. Foo MUST have one assigned sub-record for validity. # 3. Foo can only have either Bar or Baz assigned. # 4. Bar and Baz have only ONE common property, and aren’t # related in either data or implementation. class Foo ‘assigned_to’, :readonly […]

如何通过SQL函数使属性设置器发送值

我试图让一个ActiveRecord模型中的属性设置器在rails生成其sql查询之前将其值包装在text2ltree()postgres函数中。 例如, post.path = “1.2.3” post.save 应该产生类似的东西 UPDATE posts SET PATH=text2ltree(‘1.2.3’) WHERE id = 123 # or whatever 这样做的最佳方法是什么?