Questions tagged «activerecord»

Active Record是一种将域逻辑与单个对象中的存储抽象相结合的模式。使用此标记可以查询有关模式的问题,可以使用[rails-activerecord]来查询有关Rails ORM框架的问题。




3
ActiveRecord,has_many:through和多态关联
民间, 想要确保我正确理解了这一点。并且请忽略此处继承的情况(SentientBeing),而尝试着眼于has_many:through关系中的多态模型。也就是说,请考虑以下事项... class Widget < ActiveRecord::Base has_many :widget_groupings has_many :people, :through => :widget_groupings, :source => :person, :conditions => "widget_groupings.grouper_type = 'Person'" has_many :aliens, :through => :widget_groupings, :source => :alien, :conditions => "video_groupings.grouper_type = 'Alien'" end class Person < ActiveRecord::Base has_many :widget_groupings, :as => grouper has_many :widgets, :through => :widget_groupings end …

11
如何查看Ruby on Rails中给定ActiveRecord查询将生成的SQL
我想查看给定ActiveRecord查询将生成的SQL语句。我知道可以在发出查询后从日志中获取此信息,但是我想知道是否存在可以调用和ActiveRecord Query的方法。 例如: SampleModel.find(:all, :select => "DISTINCT(*)", :conditions => ["`date` > #{self.date}"], :limit => 1, :order => '`date`', :group => "`date`") 我想打开irb控制台,最后添加一个方法,该方法将显示该查询将生成的SQL,但不一定执行该查询。

3
如何在Arel和Rails中进行LIKE查询?
我想做类似的事情: SELECT * FROM USER WHERE NAME LIKE '%Smith%'; 我在Arel中的尝试: # params[:query] = 'Smith' User.where("name like '%?%'", params[:query]).to_sql 但是,这变为: SELECT * FROM USER WHERE NAME LIKE '%'Smith'%'; Arel正确包装了查询字符串'Smith',但是因为这是LIKE语句,所以它不起作用。 如何在Arel中进行LIKE查询? PS奖金-我实际上是在尝试扫描表上的两个字段,包括名称和描述,以查看查询是否匹配。那将如何工作?


3
如何将ActiveRecord结果转换为哈希数组
我有一个查找操作的ActiveRecord结果: tasks_records = TaskStoreStatus.find( :all, :select => "task_id, store_name, store_region", :conditions => ["task_status = ? and store_id = ?", "f", store_id] ) 现在,我想将结果转换为如下所示的哈希数组: [0] -> { :task_d => 10, :store_name=> "Koramanagala", :store_region=> "India" } [1] -> { :task_d => 10, :store_name=> "Koramanagala", :store_region=> "India" } [2] -> { :task_d => …




4
渴望负载多态
使用Rails 3.2,这段代码有什么问题? @reviews = @user.reviews.includes(:user, :reviewable) .where('reviewable_type = ? AND reviewable.shop_type = ?', 'Shop', 'cafe') 它引发此错误: 无法急切加载多态关联:可审查 如果我删除该reviewable.shop_type = ?条件,它将起作用。 如何根据reviewable_type和过滤reviewable.shop_type(实际上是shop.shop_type)?


5
将对象数组转换为ActiveRecord :: Relation
我有一个对象数组,我们称它为Indicator。我想def self.subjects在此数组上运行指标类方法(种类,范围等)。我知道在一组对象上运行类方法的唯一方法是使它们成为ActiveRecord :: Relation。因此,我最终不得不向添加一个to_indicators方法Array。 def to_indicators # TODO: Make this less terrible. Indicator.where id: self.pluck(:id) end 有时,我在类方法中链接了许多这些作用域以过滤结果。因此,即使我在ActiveRecord :: Relation上调用方法,我也不知道如何访问该对象。我只能通过了解它的内容all。但是all是一个数组。因此,我必须将该数组转换为ActiveRecord :: Relation。例如,这是方法之一的一部分: all.to_indicators.applicable_for_bank(id).each do |indicator| total += indicator.residual_risk_for(id) indicator_count += 1 if indicator.completed_by?(id) end 我想这可以归结为两个问题。 如何将对象数组转换为ActiveRecord :: Relation?最好不要where每次都做。 在def self.subjectsActiveRecord :: Relation上运行类型方法时,如何访问该ActiveRecord :: Relation对象本身? 谢谢。如果我需要澄清任何事情,请告诉我。

14
为什么所有Active Record都讨厌?[关闭]
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 8年前关闭。 随着我越来越了解OOP,并开始实现各种设计模式,我不断回到人们讨厌Active Record的情况。 人们常常说它的伸缩性不好(以Twitter为例),但实际上没有人解释为什么伸缩性不好。和/或如何在没有缺点的情况下实现AR的优点(通过类似但不同的模式?) 希望这不会成为关于设计模式的一场圣战-我只想特别地了解一下Active Record的问题。 如果扩展性不好,为什么不呢? 还有什么其他问题?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.