with_scopeをprotectedにするということは
こんな感じになるということなんですかね?という試行錯誤。
悪くないとは思うんですが、慣れるまでは大変そう。
なんていいながら実はけっこうクラス内でwith_scopeするのは好きなんですけどね。
class Blog < ActiveRecord::Base has_many :entries end
class Entry < ActiveRecord::Base belongs_to :blog validates_presence_of :title, :body, :null => false class << self def find_with_deleted_flag_skip(*args) with_scope(:find=>{:conditions=>{:deleted=>false}}) do find_without_deleted_flag_skip(*args) end end alias_method_chain :find, :deleted_flag_skip end end続きを読む
AC::Resourceとfindのレシーバの話。
上記の続き。
findメソッドの中に必須のスコーピングをまとめられる、というところから、するとfindのレシーバ次第でコンテキストに沿ったスコープを生成できるのではないか、と考えました。ちょっとだけ北欧、でもないか。
resouceの話と絡めるとこんな感じに書けそう。
class EntriesController < ApplicationController # recognized as below # /entries/:id # /blogs/:blog_id/entries/:id def show context = params[:blog_id].blank? ? Entry : Blog.find(params[:blog_id]) @entry = context.find(params[:id]) respond_to{|format| format.html } end end続きを読む