[英]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.