私はRuby on Railsの超初心者です。ほんの数時間前に Ruby と Ruby on Rails の両方を学び始め、その DRY 原則を自分の Laravel コードに適応させようとしました。
これは私のRoRがどのように見えるかです:
class WeddingController < ApplicationController
before_filter :get_wedding
def get_wedding
/*
If Wedding.find(2) returns false, redirect homepage
Else, bind @wedding into all methods for use
*/
end
def edit
@wedding //this method has access to @wedding, which contains Wedding.find(2) data.
end
def update
//Same as above method
end
def destroy
//Same as above method, can do things like @wedding.destroy
end
end
これは私のLaravelがどのように見えるかです
class Wedding_Controller extends Base_Controller {
public function edit($id)
{
if(Wedding::find($id) === false)
return Redirect::to('/);
//Edit code
}
public function update($id)
{
if(Wedding::find($id) === false)
return Redirect::to('/);
//Update code
}
public function destroy($id)
{
if(Wedding::find($id) === false)
return Redirect::to('/);
//Destroy code
}
}
- DRY
if(Wedding::find($id) === false)
チェックを RoR コードのようにするにはどうすればよいですか? - の場合、指定されたすべてのメソッドの
Wedding::find($id) returns actual Wedding data
ようにどのように注入できますか?$wedding variable
(可能であれば、クラス スコープを使用して何も検索しません。)
どうもありがとう!
Ps。私の RoR スクリプトを理解していない人のために。基本的にこれを行います。
Before any method call on this controller, execute get_wedding method first.
If get_wedding can't find the wedding in database, let it redirect to homepage.
If get_wedding finds the wedding in database, inject returned value as @wedding variable to all methods so they can make use of it. (e.g destroy method calling @wedding.destroy() directly.)