草庐IT

castle-activerecord

全部标签

ruby-on-rails - 如何按关联模型计数对 ActiveRecord 结果进行排序?

classCafe这是cafe.rb模型classPost这是postq.rb。帖子就像回复。我想创建新的cafe数组并按cafe.posts.count对其进行排序。最后,我将展示回复最多的前两家咖啡馆。我试过一些排序代码,比如,@cafe_by_posts=Cafe.joins(:post).order('posts.sizedsc')但是没有用。错误说cafe与post没有关联。如何根据关联的模型计数对ruby​​数组进行排序?我的英语不好,非常感谢您的回答! 最佳答案 嘿在mysql中你可以直接使用like@cafe_by_

ruby-on-rails - ActiveRecord::Base:Class 的未定义方法 `migration_error='

当我运行bundleexecrakedb:migrate--trace时,出现以下错误。C:\Sites\rails_projects\sample_app>bundleexecrakedb:migrate--trace**Invokedb:migrate(first_time)**Invokeenvironment(first_time)**Executeenvironmentrakeaborted!undefinedmethod`migration_error='forActiveRecord::Base:ClassC:/RailsInstaller/Ruby1.9.3/lib/r

ruby-on-rails - ActiveRecord 使用连接来提高性能,但将所有关联的记录加载到内存中,就像包含一样

除非我弄错了:joins比includes具有更好的性能,因为在数据库级别:joins导致innerjoinincludes导致子查询一般来说,内部联接比子查询更快。例子:#app/models/owner.rbclassOwner使用rails控制台:#showinghow'includes'inrailscausesanINstatementwhichisasubqueryirb(main):001:0>@owners=Owner.all.includes(:pets)OwnerLoad(2.7ms)SELECT"owners".*FROM"owners"PetLoad(0.4ms

ruby-on-rails - 知道什么事件触发了 ActiveRecord 模型的 after_commit

我有以下片段:classProductafter_commit:do_something,on:%i(updatecreate)defdo_somethingif#update...else#create...endendend如何知道什么事件触发了此处的提交后?请不要告诉我在提交后有2个:after_commit:do_something_on_update,on::updateafter_commit:do_something_on_create,on::create 最佳答案 ActiveRecordusestransacti

ruby-on-rails - ActiveRecord 访问器点 (.) 与方括号 ([])

使用ActiveRecord,我们可以访问像这样的值方法访问user=User.find(1)user.name#=>'John'或哈希访问user[:name]#=>'John'我只是想知道什么时候使用哪个,或者有什么最佳实践吗?我个人更喜欢methodaccess因为我觉得这更像是ruby​​方式。然而,当我看到别人的代码时,我面临着哈希访问。 最佳答案 Rails惯例是使用ActiveRecord::AttributeMethods::Read#read_attribute(点符号),而不是它的别名ActiveRecord::

ruby-on-rails - ActiveRecord::Base 的未定义方法#sanitize

我刚刚升级到Rails5.1.1并收到此错误。NoMethodError(undefinedmethod`sanitize'forActiveRecord::Base:Class):栈回溯到这段代码like_search_term=ActiveRecord::Base::sanitize("%#{escaped_search_term}%")在新的Rails升级中是否删除或更改了此方法? 最佳答案 是的,的确,它看起来是removed.SanitizewasneverpartofthepublicAPIoftheframework.

ruby - NameError:未初始化的常量 ActiveRecord::Migrator::Zlib

我是Ruby和ActiveRecord的新手。我正在尝试使用以下命令运行我的第一次迁移:rakedb:migrate我一直收到这个错误:NameError:uninitializedconstantActiveRecord::Migrator::Zlib.我尝试过不同的项目,所有迁移都出现此错误。 最佳答案 我不知道这是怎么回事,花了我一整天的时间来寻找解决方案在你的environment.rb的顶部require'zlib'这对我有用:) 关于ruby-NameError:未初始化的常

ruby-on-rails - 使用 .destroy() 返回值检查 ActiveRecord 对象是否被销毁

我正在维护某人的代码库,他们有这样的东西:if@widget_part.destroyflash[:message]="Errordeletingwidgetpart"elseflash[:message]="Widgetpartdestroyedsuccessfully"enddestroy返回什么?这样测试可以吗?我问的原因是我尝试使用flash[:message]="Errordeletingwidgetpart:#{@widget_part.errors.inspect}"而且没有错误消息,所以我很困惑。它给出了类似的东西#,@messages={}>

ruby-on-rails - 未初始化的常量 ActiveRecord::ConnectionAdapters::Mysql2Adapter::NATIVE_DATABASE_TYPES (NameError)

我在运行Rails服务器时遇到问题。我在初始化程序中设置了abstract_mysql2_adapters,包括:classActiveRecord::ConnectionAdapters::Mysql2AdapterNATIVE_DATABASE_TYPES[:primary_key]="int(11)auto_incrementPRIMARYKEY"end它解决了我的rakedb:migrate问题,但是当我尝试运行我的Rails服务器时,它给了我这个错误。C:/Users/XXXX/Documents/RoRCmS/simple_cms/config/initializers/a

ruby-on-rails - 在 has_many :through relationship, 上覆盖 ActiveRecord << 运算符以接受连接模型的数据

我有三个类:Person、Position和Directory。APersonhas_many:directories,:through=>:position.目录有_many:people,:through=>:position.个人和目录都有_many:positions。除了具有id、person_id和directory_id之外,Position模型还有一个或多个附加字段(例如,title)。我希望能够在每次将人员添加到Directory.people集合时向连接模型添加数据,例如标题字段。通常的directory=Directory.last#Let'sassumethat