with_scopeでいいじゃん
Railscastを見直していて、自分の変な思い込みに気づきました。
class Task < ActiveRecord::Base def self.find_incomplete find(:all, :conditions => ["complete = ?", false]) end end
のfindのオプションを渡したい場合に
class Task < ActiveRecord::Base def self.find_incomplete(options = {}) options = {:conditions => ["complete = ?", false]}.update(options || {}) find(:all, options) end end
みたいなことを書いてた。
class Task < ActiveRecord::Base def self.find_incomplete(options = {}) with_scope options do find(:all, :conditions => ["complete = ?", false]) end end end
でいいじゃんね?with_scopeも結構つかってるのに何やってんだ俺。orz
プロジェクトのみんなゴメン。
あと、こんなことができることを初めて知った。
class Project < ActiveRecord::Base has_many :tasks end
@project = Project.find(params[:id]) @tasks = @project.tasks.find_incomplete
なんでこうなるのか、よく分からんっす。
追記
まだこれのソース読んでないけど、たぶんArrayのインスタンスを何かでextendしたものを返すメソッドをhas_manyは作ってるような気がする。