このメソッドの先頭にある proc を他の場所で定義し、メソッドのスコープから戻る proc の機能を保持する方法があるかどうかを知りたいです。
def add_user_to_team(user_id, team_id) v = Proc.new do |t| t.error の場合は t を返す t 終わり User.transaction do ユーザー = v.call( validate_user_exists(user_id)).obj チーム = v.call( validate_team_exists(team_id)).obj ...他の多くの検証... 結果 (真、なし、team_user) 終わり 終わり
他の場所に含めることができるモジュールでこのプロシージャを定義できるようにしたいと考えています。しかし、メソッドに proc を返すと、return ステートメントで LocalJumpError が返されます。
たとえば、私はやりたい
デフォルト検証 Proc.new do |t| t.error の場合は t を返す t 終わり 終わり
元のコードを改良して行う
def add_user_to_team(user_id, team_id) User.transaction do ユーザー = validate.call( validate_user_exists(user_id)).obj チーム = validate.call( validate_team_exists(team_id)).obj ...他の多くの検証... 結果 (真、なし、team_user) 終わり 終わり
また、このエラー チェック ロジックを統合する方法について、他の提案も受け付けています。
- 検証が失敗した場合、スコープされたメソッドが救済されます
- エラーがなければオブジェクトを返し、続行します