ruby-on-rails - rails 4 : how to use named scope with has_many associations

标签 ruby-on-rails ruby ruby-on-rails-4

在我的 Rails 4 应用程序项目(模型)has_many 视频(模型)中。我在视频模型中有一个命名范围:

scope :live, where( is_deleted: 0, sent_to_api: 1 )

在我的一个项目 View 中,我这样做(项目是项目的一个实例):

project.videos.live.size

我希望得到的是那个特定项目中的项目数量,但我得到的是任何项目中的视频数量。就好像 .live 不是从 .videos 返回一个子集而是替换它。

我看到它解释了here将命名范围相互链接起来应该与逻辑 AND 相结合,但是当应用于“关联方法”时 [<--不确定 .videos 在这种情况下的正确术语]似乎并不即将发生。

正确的做法是什么?

最佳答案

我相信它在 Rails 4 中应该是这样的:

scope :live, -> { where(is_deleted: 0, sent_to_api: 1) }

Rails 4 文档及其中的所有示例都向您展示了将可调用对象传递给作用域以确保它每次都被调用。如果它不能像这样工作,请尝试将其实现为类方法,看看它对您有何影响。

http://api.rubyonrails.org/classes/ActiveRecord/Scoping/Named/ClassMethods.html

关于ruby-on-rails - rails 4 : how to use named scope with has_many associations,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18792180/

相关文章:

ruby - gems bundle 和 bundler 有什么区别

ruby-on-rails - 设置 Rails 中搜索字段的默认值

iphone - 设计用户注销在 iPhone 上不起作用?

sql - 在 Rails 中执行 destroy_all 的更有效方法?

ruby - 如果源文件存在,如何编写 Chef 配方来复制文件? only_if 守卫不工作

ruby-on-rails - 如何引发 ActiveRecord::Rollback 异常并一起返回值?

ruby-on-rails - ruby /Rails : undefined method `set' for ActiveJob

ruby-on-rails - 从 Active Record 范围内访问类方法?

ruby-on-rails - Rails 没有为新记录分配唯一 ID

ruby-on-rails - 在 rspec 文件中,我得到 => Error: ActionController::RoutingError: No route matches xxxxxxx despite valid routing