私は以下のコードを使用してアクティブレコードを拡張し、オーダークラスを少しきれいにします。しかし、それは動作していません。一方、私は抽象基底クラスOrderBaseを作成する場合ActiveRecord :: Base Extensionが動作しません
environment.rbにはclass ActiveRecord::Base
def self.has_statuses(*status_names)
validates :status,
:presence => true,
:inclusion => { :in => status_names}
status_names.each do |status_name|
scope "all_#{status_name}", where(:status => status_name)
end
status_names.each do |status_name|
define_method "#{status_name}?" do
status == status_name
end
end
end
end
私は
require "#{Rails.root}/lib/active_record_extensions.rb"
と上記の拡張を必要とする代わりに、それは予想通り動作していることからの私のためのクラスを継承してみましょう。私の猿のパッチを「取る」ためには何をする必要がありますか?
EDIT:忘れてしまったことは、has_statusesのメソッドが欠落しているというメッセージが表示されます。
EDIT2:上記のコードは(レールc)のコンソールで動作しますが、それはテストで
EDIT3動作しません:私は偽= config.cache_classesに環境/ test.rbを変更し、それがいるようだをトリックを行う。明らかに多くを学ぶ:)
に必要追加しましたか? – seeingidog
私はOrderクラスでそれを使用しようとしています:has_statuses:created、:in_progress、:クラスをきれいに保つために出荷されました。 – mhenrixon
@ tourismidog err今、私のために働いていて、何が違うか分かりません。私は明らかに何かをしましたが、何がわからないのですか。それがうまくいくはずだと答えを投稿すると、それを答えとしてマークします! – mhenrixon