簡體   English   中英

Rails命名為范圍

[英]Rails named scopes

我試圖重構和優化代碼。 特別是,我想減少進入數據庫的查詢量。 在我的用戶控制器中,它工作得非常好,但在另一個控制器中,我嘗試過相同的操作,但事實並非如此。 我已經搜索了一段時間的答案為什么它不起作用但我無法真正回答它。

我有用戶,可以通過注冊訂閱課程。 它們通過has_many:through等關系連接起來。 以下作品:

@users_courses = current_user.courses
@courses = @users_courses.a_named_scope

但在我的課程控制器中,以下內容不起作用:

@all_courses = Course.all
@specific_course = @all_courses.specific_course_scope

范圍在相應的模型中定義並正常工作。 它們並不復雜,只是“在哪里......真/假”的定義。 有人知道這里的問題嗎? 謝謝!

我正在使用rails版本3.2和ruby版本2。

直到Rails 4,你應該使用scoped方法,如果你想讓ActiveRecord::Relation實例(你可以調用其他范圍)返回而不是Array

@all_courses = Course.scoped
@specific_course = @all_courses.specific_course_scoped

這應該工作。

如果你想使用includes(:courses) ,你就可以這樣做,例如:

@specific_course = @all_courses.specific_course_scoped.includes(:courses)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM