草庐IT

Activerecord

全部标签

mysql - ActiveRecord::Base SQL 结果对象类型在 MySQL 和 PostgreSQL 中不同

我错过了什么吗?相同的控制台,相同的代码库,不同的数据库连接。结果:返回不同的对象类型。如果使用MySQL,我们得到一个数组数组,如果使用PostgreSQL,我们得到一个哈希数组。示例类classUser使用MySQL连接>User.connection.execute('SELECT*fromuserslimit2').to_a(211.0ms)SELECT*fromuserslimit2=>[[1,"jmetta","jmetta@gmail.com"],[2,"johnmetta","jmetta+test@gmail.com"]]使用Postgres连接>Series.con

mysql - 恢复迁移时 ActiveRecord::IrreversibleMigration 异常

我创建了以下添加和删除一些索引的ActiveRecordMigration。classFixIndexestrueremove_index:table2,:name=>"index_table2_on_field1"remove_index:table2,:name=>"index_table2_on_field2"remove_index:table3,:name=>"index_table3_on_field1"add_index:table3,[:field1,:field2]endend当我运行迁移($bundleexecrakedb:migrate)时,它按预期工作正常。不幸

mysql - Rails - 终止正在运行的查询的正确方法

第一次在Rails控制台中运行查询...我不小心运行了一个查询:像这样User.where(:location=>'US'))这显然是在拉动我相当多的数据。现在查询仍然卡在那里。我知道我可以关闭这个session并重新启动另一个session。但我只想知道终止查询的最安全方法。在mysql中是否有类似的东西:showfullprocesslist和kill# 最佳答案 当我想停止一个长时间运行的查询时,我通常只是沿着中断链往上走。ctrlc将发送SIGINT并希望将您带出控制台中的当前查询或循环。但是,有时候,这是行不通的,所以我更

MySQL、Rails ActiveRecord 日期分组和时区

我想按创建日期统计用户数。当我查询我的最后一个用户时,我有:>User.last.created_at=>Thu,07Aug201421:37:55BRT-03:00当我计算每个日期的用户数时,我得到了这个:>User.group("date(created_at)").count=>{Fri,08Aug2014=>1}创建日期是8月7日,但结果是8月8日。发生这种情况是因为组条件是UTC,而我的时区是“巴西利亚”。我的application.rb中有这个:config.time_zone='Brasilia'config.active_record.default_timezone=

mysql - rails 的查询速度很慢

我想做一个查询,但是查询速度慢,我有五个这样的模型:classMya然后,我将一些测试数据插入到mysql:(seed)mya=Mya.create!(title:'firsttest')i=010.times{i=i+1myb=Myb.create!(title:"my_#{i}")5000.times{myc=Myc.create!(mya_id:mya.id,myb_id:myb.id)4.times{myd=Myd.create!(mya_id:mya.id,myb_id:myb.id,myc_id:myc.id)mye=Mye.create!(mya_id:mya.id,my

php - Yii2 activerecord PHP 从 3 个不同的表中获取多个连接

我有3个模型classModelA{publicfunctiongetBs{return$this->hasMany(ModelB::className(),["AID"=>"BID"]);}}classModelB{publicfunctiongetCs{return$this->hasMany(ModelC::className(),["BID"=>"CID"]);}}classModelC{}使用yii2activerecord我想检索与ModelA连接的ModelB,ModelC表的关系我尝试了以下方法:$a=ModelA::find()->joinwith("bs")->jo

mysql - 如何从控制台使用 Rails 3 事件记录插入多对多表

我设置了has_and_belongs_to_many并从表中读取,但我似乎无法从Rails控制台写入表。Household.first.appliances[0]=Appliance.first在我处于控制台时工作,当我保存它时,它返回true但实际上并不写入数据库。我正在使用远程mysql数据库,可以从控制台写入所有其他表,但不能写入many_to_many。任何想法如何去做? 最佳答案 与has_and_belongs_to_many相比,将has_many与:through选项一起使用可能要好得多,因为它更灵活并且避免了这种

mysql - 用于从从属 MySQL 框读取的 ActiveRecord 配置

我有一个非常直接的MySQL主/从复制设置。ActiveRecord配置为命中master主机名,正如database.yml中预期的那样。我的问题是,目前是否可以为ActiveRecord设置一个选项来执行从从属设备的所有读取并将写入留给主设​​备?我正在使用RubyonRails/ActiveRecord3.1.3。我还没有找到执行以下操作的任何选项,只有database.yml中的一个主机输入字段。这目前可能吗? 最佳答案 是的,这是可能的,但你需要为此使用gem;它没有内置到Rails本身。我使用seamlessdataba

php - 简单的 afterSave 方法在 Yii 中不起作用

我想通过afterSave方法更新insertedraw中的一个字段,所以我在DriverModel中开发了以下代码protectedfunctionafterSave(){parent::afterSave();if($this->isNewRecord){$newid=self::newid($this->id);$this->updateByPk($this->id,newCDbCriteria(array('condition'=>'driverid=:driverid','params'=>array('driverid'=>$newid))));}}在Controller中

mysql - 将无效的 ActiveRecord 日期插入 MySQL 数据库

MySQL允许date字段的值为0000-00-00,但是ActiveRecord将分配给Date值为nil。我有一个遗留应用程序依赖于“从不”概念的确切字段内容,因此如果客户最后付款日期是0000-00-00,它会确认为“从不”付费。有没有一种方法可以覆盖此date字段的ActiveRecord(正确)验证并将此值写入数据库而不会弄脏我的手(太)?感谢您的任何见解。 最佳答案 我在Rails3.0.3项目中遇到了这个问题,猴子修补了以下内容,允许您将“0000-00-00”分配给模型日期字段。该值将在插入/更新时传递到mysql数