- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个简单的时间跟踪应用程序,其中包含项目、任务和条目。
设置很简单:
class Project < ActiveRecord::base
has_many :tasks
has_many :entries, :through => :tasks
end
class Task < ActiveRecord::base
belongs_to :project
has_many :entries
default_scope order("name asc") # this causes problems
end
(Entry
完全简单,所以我将其省略)
但是,当我尝试对从项目中选择的条目进行自定义排序时,我遇到了麻烦。具体来说,我正在尝试选择最新的条目,如下所示:
latest_entry = project.entries.order("created_at desc").first
但是由于 :through => :tasks
和 Task
具有的 default_scope
,Rails 执行的实际查询变成:
SELECT `entries`.* FROM `entries`
INNER JOIN `tasks` ON `entries`.`task_id` = `tasks`.`id`
WHERE `tasks`.`project_id` = 23
ORDER BY name asc, entries.date desc LIMIT 1 -- wrong order!
请注意 ORDER BY 子句
- 它包含来自 Task
的 default_scope
,并且只有在此之后它才包含我指定的顺序。
所以基本上,我没有获得项目中所有条目的最新条目,而只获得第一个任务中的最新条目。
有什么办法可以解决这个问题吗?似乎应该有一种方法可以在 through
模型上忽略/否定 default_scope
(而不完全删除 default_scope
)
最佳答案
怎么样reorder :
latest_entry = project.entries.reorder("created_at desc").first
关于sql - Rails 3.2 : Ordering a has_many :through selection, 当直通模型具有 default_scope 时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13289019/
我有一个使用 Paranioa gem ( https://github.com/radar/paranoia ) 的模型,用于在数据库中保留已删除的 ActiveRecord 元素。 Paranio
在 ActiveRecord 中有一个 default_scope 类方法来指定默认范围。例如 class User false) end User.all # => SELECT * FROM u
我有一个如下所示的模型设置: class User has_many :items has_many :words, :through => :items end class Item b
我有一个具有以下 default_scope 的用户模型: default_scope where(account_id: Account.current_account.id) 如果我打电话User
假设我有一个 Post 模型和一个 Comment 模型。使用一种常见的模式,发布 has_many 评论。 如果 Comment 设置了 default_scope: default_scope w
Everywhere on the互联网上的人提到使用 Rails default_scope 是一个坏主意,而 stackoverflow 上 default_scope 的热门话题是关于如何覆盖它
嘿。在我的 Controller /索引操作中,我使用以下查询: @course_enrollments = current_user.course_enrollments 这就是我的 table 的
如何在rails控制台中查询时跳过default_scope 例如 class User { where.not(type: 'guest') } end 您还应该小心列名type,除非您将其用于单表
如果我有一个具有默认范围的 ActiveRecord::Base 模型: class Foo ["bar = ?",bar] end 有没有办法在不使用 default_scope 条件的情况下执行
我在访问范围时收到此错误。 这是 AR 模型 class StatisticVariable < ActiveRecord::Base attr_accessible :code, :name
我正在尝试在我的应用中实现 gem devise。在此之前,我的顶级模型是 Album,但现在它是 belongs_to :user(来自设计)。 然后我添加到albums_controller.rb
我在 mysql 下通过了以下测试(使用 FactoryGirl): test "order by title" do @library = create(:drawing_library
在我的模型 (pins.rb) 中,我有两个排序顺序: default_scope order: 'pins.featured DESC' #for adding featured posts to
在执行 ActiveRecord join 时尝试跳过 default_scope 时遇到一些问题。 尽管代码库非常大,但我只是展示基础知识,因为我认为它很好地说明了问题所在: class Clien
我在 rails 中使用 default_scope 来抽取任何具有 is_deleted = true 值的东西(任何具有这个值的东西都不应该显示,但我仍然想保留数据库中的行)。但是有一个 Cont
有什么方法可以在 where 条件下覆盖默认范围或以前的范围吗? (除了重构模型以不使用 default_scope 或使用 unscoped) 另外,为什么会这样?感觉这不是最令人期待或最直观的方法
我的应用程序不仅具有“用户”,而且还具有“管理员”和“ super 管理员”。由于所有这三个共享相同的属性,因此我只想使用一个带有附加属性“role”的表,该属性可以是“user”,“admin”或“
我尝试通过以下方式定义 default_scope: default_scope :joins => :product, :select => "catalog_products.*, product
我在弄清楚这一点时遇到了一些麻烦:我有一个模型 Machine在 locations 上有外键表,我想要 Machine 的默认范围按 location.name 排序.这可能吗? 最佳答案 是的,使
关于 Rails 2/3 的 default_scope 的问题。 在我的 Rails 3 项目中,我使用了很多 default_scope 来通过 created_at desc 进行排序。 所以首
我是一名优秀的程序员,十分优秀!