私はいくつかの簡単なショートカット クラス メソッドを記述した Rails アプリにロールモデルを持っています。しかし、これは深刻な問題を引き起こします。クリーンなデータベースを持つ別のコンピューターにそのアプリのスキーマを読み込もうとすると、失敗します。これは、db:schema:load rake タスクが最初に Rails 環境全体をロードするため、もちろんまだ存在しないデータベース内のレコードを探しているクラス メソッドをロードするためです。
だから2つの問題:
- ロード時にメソッドを実行する理由を理解しているかどうかはわかりません。
- すべてのメソッドのエラーを救出しない限り、それを回避する方法はわかりません。
私が見逃している「レール」または「ルビー」の方法はありますか?
これが私のコード例です:
Class Role < ActiveRecord::Base
def self.admin
find_by_name "Administrator"
end
def self.user
find_by_name "User"
end
def self.moderator
find_by_name "Moderator"
end
end
Gist の同じコード: https://gist.github.com/836501
助けてくれてありがとう。
アップデート:
ファクトリからこれらのクラス メソッドへの呼び出しをブロックの横に配置するのを忘れていたことが判明しました。
したがって、この:
Factory.define :admin, :parent => :user do |f|
f.roles [Role.admin]
end
これである必要があります:
Factory.define :admin, :parent => :user do |f|
f.roles {[Role.admin]}
end