草庐IT

activerecord-import

全部标签

sql - ActiveRecord 的意外行为包括

我正在使用ARincludes在对象User和Building之间执行LEFTOUTERJOIN的方法,其中User可能有也可能没有Building关联:users=User.includes(:building).references(:buildings)因为我正在使用references,任何关联的Building对象都将被预先加载。我的期望是我随后能够遍历用户列表,并检查用户是否有与其关联的建筑物而不会触发额外的查询,但实际上每当我尝试访问建筑物属性时我都会看到对于没有建筑物的用户,AR会进行另一个SQL调用以尝试检索该建筑物(尽管在后续尝试中它只会返回nil)。这些查询显然是

ruby-on-rails - Fork、Ruby、ActiveRecord 和 Fork 上的文件描述符

我知道当我们fork一个进程时,子进程会继承父进程的打开文件描述符和偏移量的副本。根据手册页,这指的是父级使用的相同文件描述符。基于以下程序中的理论puts"Process#{Process.pid}"file=File.open('sample','w')forked_pid=forkdosleep(10)puts"Writingtofilenow..."file.puts("HelloWorld.#{Time.now}")endfile.puts("Welcometowinterofmydiscontent#{Time.now}")file.closefile=nil问题一:当父进

ruby-on-rails - ActiveRecord::QueryCache#call 占用了超过 70% 的执行时间

NewRelic向我展示了应用服务器中超过80%的执行时间发生在“MiddlewareActiveRecord::QueryCache#call”中这里是相关测试代码的要点(尽管我在其他API端点上看到了类似的结果)。Gist我正在AWSElasticBeanstalk上的t2.medium实例和t2.smallPostgresRDSDB上运行应用程序服务器,max_connections设置为100。我正在通过loader.io对此进行测试,对100个用户进行测试使用维护客户端负载设置(这意味着每分钟大约6000个请求)。有谁知道为什么QueryCache花费这么多时间?

ruby-on-rails - 是否可以只从 ActiveRecord 关联请求某些列?

考虑defFoohas_one:userend假设我只想要一个Foo的User的名称,而不是任何其他列。所以我要SELECTnameFROM"users"WHERE"prices"."id"=123但是做foo.user.name会给我SELECT*FROM"users"WHERE"prices"."id"=123有什么巧妙的方法可以使用关联来只获取一列吗?如果没有,那么我必须这样做:User.where(id:foo.user_id).pluck(:name).first 最佳答案 通常,您可以使用.select方法指定要选择的列

ruby-on-rails - 如何完全重新加载 ActiveRecord 以重置其内存值?

在RSpec测试中,我创建了一个记录,其中包含多个内存值。foo.reload对对象的属性按预期工作,但内存的属性仍然存在。到目前为止,它通过完全重新创建对象来工作:foo=Foo.find(123)但在我的例子中,查找记录的逻辑实际上更复杂。什么是完全重新加载记录并删除所有内存值的好方法? 最佳答案 好的方法是您已有的方法:完全重新创建对象。您不能以任何简单的“Rails”方式“重新加载”对象的内存值,因为内存属性不是Rails或ActiveRecord的功能。两者都不知道您是如何内存方法的。

ruby-on-rails - rails 3/ActiveRecord : How to switch/change table name during request dynamically?

我想在请求期间动态更改ActiveRecord模型类的表名。例如,有许多具有相似结构(列)的表:mydb:sample_data_12222sample_data_12223sample_data_12224sample_data_12225...所以,我想做的是..._1。定义基本模型类,如:classSampleData_2。在请求期间更改目标表,例如:defaction_methodSampleData.set_table_name"sample_data_#{params[:id]}"@rows=SampleData.all如果在非线程环境(如Passenger/mod_rai

ruby-on-rails - 如何通过尚未保存的父关联访问 ActiveRecord 祖父关联?

我有一种情况,我想在保存父对象之前访问关联的祖parent。我可以想到几个hack,但我正在寻找一种干净的方法来完成此操作。以下面的代码为例说明我的问题:classCompany:departmentsendclassDepartment:departmentendcompany=Company.find(1)#=>dept=company.departments.build#=>empl=dept.employees.build#=>empl.company#=>Employee#companydelegatedtodepartment.company,butdepartmentis

ruby - ActiveRecord - 在连接模型中查找具有共享属性的所有对象

我有三个模型classBoat我正在尝试编写一个简单的ActiveRecord查询来查找所有帆船类型的船。类似于Boat.where(classifications:"Sailboat") 最佳答案 我认为这可行:Boat.joins(:classifications).where(classifications:{name:'Sailboat'})#nameorwhateverfieldcontainsSailboat生成此查询:SELECT`boats`.*FROM`boats`INNERJOIN`boat_classifica

ruby - 在没有 Rails、ActiveRecord 或任何带 RSpec 的数据库的情况下使用 FactoryGirl

我想知道是否有人知道是否可以在没有任何上述先决条件的情况下使用FactoryGirl。我想在为移动和Web甚至可能的API驱动UI自动化测试时使用它来生成即时测试数据。我知道我可以创建一些自定义帮助程序类/方法并使用getter和setter等,但我认为使用这个很棒的小gem会很好。我进行了相当广泛的搜索,并尝试建立一个基本的RSpec项目(我也尝试过Cucumber),但无济于事。看来我仍然需要使用相关登录实例化类才能使用它。FactoryGirl.definedofactory:userdofirstname{Faker::Name.first_name}lastname{Fake

ruby-on-rails - 如何从应用程序/模块扩展 ActiveRecord?

我有几个不同的acts_as_...自定义类方法,我想在我的应用程序中使用。我希望这些方法的代码位于app/modules目录中的文件中。我一直无法让它工作。例如,我有一个文件:app/modules/acts_as_lockablemoduleActsAsLockabledefacts_as_lockablebefore_create:set_lockincludeInstanceMethodsendmoduleInstanceMethodsprotecteddefset_locknow=Time.now.to_sself.lock=Digest::SHA1.hexdigest(no