谁能告诉我Rails上的build和new命令有什么区别? 最佳答案 new用于特定模型的新实例:foo=Foo.newbuild用于在AR关联中创建一个新实例:bar=foo.build_bar#(has_oneorbelongs_to)或bar=foo.bars.build#(has\_many,habtmorhas_many:through)http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html更新根据@toklands的建议
我有两种类型的类:BaseUser和User使用Authlogic的身份验证系统作为身份验证。这种继承是使用SingleTableInheritance实现的如果有新用户注册,我会把他注册为用户。但是,如果我已经有一个具有相同电子邮件的BaseUser,我想将该BaseUser更改为数据库中的一个用户,而不是简单地将所有数据从BaseUser复制到用户并创建一个新用户(即使用一个新的ID)。这可能吗?谢谢。 最佳答案 Steve的答案有效,但由于调用save时实例属于BaseUser类,因此User中定义的验证和回调将不会运行。您可
我有一个类似2012-01-01T01:02:03.456的字符串,我使用ActiveRecord将其存储在Postgres数据库TIMESTAMP中。不幸的是,Ruby似乎切断了毫秒数:ruby-1.9.3-rc1:078>'2012-12-31T01:01:01.232323+3'.to_datetime=>Mon,31Dec201201:01:01+0300Postgrs支持微秒分辨率。如何相应地保存我的时间戳?我至少需要毫秒分辨率。(PS是的,我可以破解postgres中的毫秒整数列;这违背了ActiveRecord的全部目的。)更新:非常有帮助的回复表明Ruby的DateTi
如何在不执行额外查询的情况下过滤AR查询的结果?例如u=User.where(name:"bob",age:[10,20])#1stselectquerytodbu.class#ActiveRecord::Relationtens=u.where(age:10)#2ndselectquerytodb我不希望第二个查询调用数据库,而是过滤在u(第一个查询)中检索到的结果。 最佳答案 ActiveRecord:Relation仅在访问其元素时查询数据库。因此,您拥有的序列根本不会调用数据库,除非您编写类似u.first或tens.fir
我正在使用Rspec测试我的ActiveRecord模型。我刚刚向我的验证之一添加了自定义错误消息,如下所示:validates:accepted_terms_at,:presence=>{:message=>'YoumustaccepttheTermsandConditionstousethissite.'}现在下面的测试失败了:it{shouldvalidate_presence_of(:accepted_terms_at)}...错误Expectederrorstoinclude"can'tbeblank"whenaccepted_terms_atissettonil。所以测试失
在Sequel中,我可以做到:irb(main):003:0>DB["selectfalse"].get=>false返回一个错误的bool值。我希望能够在ActiveRecord中做类似的事情:irb(main):007:0>ActiveRecord::Base.connection.select_value"selectfalse"=>"f"如您所见,它返回字符串"f"。有没有办法用ActiveRecord得到一个错误的bool值?(类似地,我可能正在调用一个返回timestamptz、数组等的函数——我希望返回的值具有正确的类型)我的用例:我正在调用一个数据库函数,想要返回一个键
我需要要求事件记录,但我在rails之外工作(原因如下:SimpleRubyInputValidationLibrary)。我需要require整个railsgem,还是我可以成为DRYer? 最佳答案 下面是我在Rails之外使用ActiveRecord的方式:#!/usr/bin/rubyrequire'active_record'require'mysql2'#or'pg'or'sqlite3'ActiveRecord::Base.establish_connection(adapter:'mysql2',#or'postgr
引用这个:IsthereanydifferencebetweenGROUPBYandDISTINCTGivenatablethatlookslikethis:name------barrydavebilldavedavebarryjohnThisquery:SELECTname,count(*)AScountFROMtableGROUPBYname;Willproduceoutputlikethis:namecount-------------barry2dave3bill1john1对于ActiveModel使用COUNT执行GROUPBY的正确Rails约定是什么?
所以我有两个模型,State和Acquisition。状态has_many收购。我觉得51条记录的自动递增整数主键相当愚蠢。所以我将州的模型更改为PK(州是两个字母的缩写;我没有在任何地方存储实际的州名称:classState问题是当我创建采集模型时,它将外键列state_id创建为一个整数。更具体地说,脚本/生成的迁移做了:classCreateAcquisitions我假设t.references数据类型将其设置为int。问题是我的Acquisition类上的创建方法试图将状态缩写放入表acquisitions的state_id字段中(是的,它在数据库上称为state_id,即使它
使用ruby和新的Activerecord查找列中具有重复值的记录的最佳方法是什么? 最佳答案 将@TuteC翻译成ActiveRecord:sql='SELECTid,COUNT(id)asquantityFROMtypesGROUPBYnameHAVINGquantity>1'#=>Type.select("id,count(id)asquantity").group(:name).having("quantity>1") 关于ruby-如何使用ActiveRecord查找具有重