私の Rails アプリでは、ビジネスを作成するときに、次のフィールドを持つフォームがあります。
<%= check_box_tag(:default_company) %>
<%= label_tag(:default_company, "Set Company as Default") %>
基本的に、ビジネスを作成するときに、このボックスをオンにした場合、次のコードのようなものを実行する必要があります。
def set_default_company(company, user)
exists = DefaultCompany.find(user.id)
if exists
exists.update_attributes(company: company)
else
DefaultCompany.create(company: company, user: user)
end
end
学習中、私は通常、コントローラーでそのようなことを行いますが、ベストプラクティスに従ってファットモデル、スキニーコントローラーを使用しようとしているため、次のようなロジックを使用したいと考えています:
def create
@company = Company.new(params[:company])
if @company.save
if params[:default_company]
Company.set_default_company(@company.id, current_user.id,)
end
flash[:notice] = "Company was successfully created."
redirect_to @company
else
redirect_to new_company_path
end
end
ここで、 を呼び出すためにクラス メソッドとインスタンス メソッドのどちらを使用するかについて混乱していますset_default_company
。どちらも機能するように見えますが、どちらにもメリットはありません。
どのメソッドを使用するかについての情報を提供することに加えて、誰かがそれをクラス メソッドとインスタンス メソッドとして記述する簡単な実装を示すことができれば、その理由をよりよく理解できるかもしれません。
これが私がそれらを書く方法です:
def self.set_default_company(company, user)
# Logic here
end
def set_default_company(company, user)
# Logic here
end
そのように書いても、どちらにもメリットはありません。