activerecord-relation
全部标签 我正在尝试使用单表继承从不是单表继承基类的类中查询类层次结构中的所有记录。例如,给定以下类层次结构。classAnimal我希望能够查询所有的狗dogs=Dog.alldogs是Mutt和PureBred实例的列表。这能做到吗?我通过将Dog类中的default_scope设置为来尝试概念验证default_scope{where(:type=>['Mutt','PureBred'])}但ActiveRecord仍然附加了更严格的WHEREtypeIN('Dog')条件 最佳答案 没有;您遇到了Rails实现STI的技术限制。你必须
我运行以下代码来捕获任何可能挂起的SQL语句。在尝试对此进行测试时,我编写了一个非常优化的sql语句,它需要一分钟的时间才能运行。我在activerecordexecutesql语句周围放置了一个20秒的超时包装器,但它似乎并没有因为花费很长时间而中断sql调用。这是针对Oracle数据库运行的。start_time=Time.nowTimeout.timeout(20)do#20timeoutforlongrunningsql@connection.connection.execute(sql_string)endtotal_sql_time=Time.now-start_timep
假设我有以下模型:classFoo:barsclassBar假设Baz有一个“名字”属性。我选择Baz名称为“x”的所有Foo的最佳方法是什么?我原以为我可以做类似Foo.join(:baz).where('bazs.name'=>'x')的事情,但这似乎行不通。 最佳答案 这应该可行!Foo.joins(:bazs).where(bazs:{name:'x'}) 关于ruby-on-rails-根据ActiveRecord中的连接选择基于孙子属性的对象,我们在StackOverflow
我的ActiveRecord查询有一个小问题。我有一个产品模型,它看起来像:#现在我想在所有名称上选择DISTINCT,并取回所有Product的属性。我试过:@products=Product.where(restaurant_id:!nil).group("products.name").order("name")但是我得到了这个错误:PG::GroupingError:ERROR:column"products.id"mustappearintheGROUPBYclauseorbeusedinanaggregatefunctionLINE1:SELECT"products".*F
在我的RubyonRails应用程序中,我有一个模型Instance,它属于另一个模型Zone。Zone模型本身属于Country模型。我正在获取一组Instance对象,如下所示:scope:thisweek,->{joins(:zone).where(zones:{created_at:...}).includes(:zone)我想将Country加入Zone和Instance,然后对结果Instance进行排序根据zone.country.name字段设置。谁能帮帮我? 最佳答案 您可以尝试以下方法:scope:this_we
我有一个模型Book与State有has_many关系。classBookState通过name属性将图书的可见性设置为“私有(private)”、“受限”或“公开”。出于审计目的,我们会记录所有状态更改,以便了解我使用的图书的当前状态>book=Book.first>book.states.last.name>"public"现在我需要查询当前状态为公开的所有Book对象。类似的东西:Book.joins(:visibility_states).where(states:{state:"public"})问题是上面的查询返回所有当前公开或过去公开的书籍。我只希望它返回当前“公开”的书
我有一个包含许多产品的Rails应用程序,其中一些产品与问题模型相关联。其中一些产品有一个issue_id(因此一个问题has_many产品)而有些则没有。没有问题ID的产品是我正在开发的新产品。我以前有一个命名范围,因此我可以使用Product.published列出产品,如下所示:scope:published,->{joins(:issue).reorder('products.created_atASC,products.numberASC').where('products.status=?',Product.statuses[:available]).where('issu
我有一个包含order_date日期时间列的订单表。需要一个查询来获取特定时间范围内所有日期的记录。示例:获取美国东部时间上午7点到上午9点之间所有日期的订单。类似于:Order.where('time(order_date)BETWEEN?AND?','7am','9am')开始和结束时间来自文本字段,用户可以在其中输入凌晨2点、下午3点、早上6点等字符串值 最佳答案 方法一:提取您可以使用EXTRACT从order_date获取小时数:Order.where('EXTRACT(hourFROMorder_date)BETWEEN
我看到.where语句使用大量CACHEUserLoad消息发出大量请求而不是关联。这是真的还是假的?在这种情况下,我得到一个ActiveRecord_Relation:@dogs=Dog.where(user_id:current_user.id).order('created_atDESC')在另一种情况下,我得到一个ActiveRecord_Associations_CollectionProxy:@dogs=current_user.dogs.order('created_atDESC')当我在View中迭代时我在控制台日志中收到不同的消息:ActiveRecord_Relat
假设我有一个名为Apples的ActiveRecord,我想要一个类方法来计算数据库中每个苹果的总价,如下所示:defApples.total_priceApples.sum(:price)end这是我在我的一个View中使用的一种方法来制作饼图。所以,像这样:Apples.brand("reddelicious").sum(:price)/Apples.total_price=%ofpiechartApples.brand("fuji").sum(:price)/Apples.total_price=饼图的另外%Apples.total_price被重复调用,但此时值不会改变。A)R