【问题标题】:Add "order" to a scope defined in the model将“订单”添加到模型中定义的范围
【发布时间】:2013-03-05 02:23:32
【问题描述】:

在我的 Test.rb 模型中,我的作用域如下:

#....
has_many fathers
scope :msr, includes(fathers: :kids)

kids 表/模型它的自我假设有一个名为 finger 的列

在控制器中,我正在使用这样的查询:

 @tests = Test.msr.where(organization_id: params[:id]).limit(3)

我想添加一个“订单”子句,这样我就可以按每个孩子的手指数进行排序。 但不确定在哪里以及如何添加“订单”子句?

【问题讨论】:

  • 你想在这里实现什么?先按注册表 Patient_counts 排序,然后测量目标?

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.2 rails-activerecord


【解决方案1】:

试试

scope :ordered_by_kid_fingers, order('kids.fingers DESC')

这是假设您通过joinsincludes 加载关联所以

>> Test.joins(fathers: :kids).ordered_by_kid_fingers

应该有效

更新:在范围内定义两者

scope :msr, includes(fathers: :kids).order('kids.fingers DESC')

【讨论】:

  • 好吧,我想在范围内定义“包含”部分和“订单”部分。
  • 嗯,很奇怪...一旦我添加了订单,json 返回NOTHING....一旦我取出订单,JSON 正确返回。
  • 是的,这很奇怪。但是如果我们没有真正查看确切的代码,我们将会遇到问题:)
猜你喜欢
  • 2011-04-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多