このメソッドの先頭にある 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)
終わり
終わり
また、このエラー チェック ロジックを統合する方法について、他の提案も受け付けています。
- 検証が失敗した場合、スコープされたメソッドが救済されます
- エラーがなければオブジェクトを返し、続行します