簡體   English   中英

Rails最佳實踐:模型中的公共方法

[英]Rails best practices : Public methods in model

我是新手,我想知道我的應用程序是否會在不久的將來失敗,因為我不了解Rails的所有細節。 所以我想問你:-)

我有一個用戶和一個產品模型,我想創建一個可以像這樣使用的方法:

@user.take!(product)

所以我在用戶模型中寫了以下幾行:

def take!(product)
  product.owner = self
end

但是,如果我在模型的私有部分中執行此操作,則它將不起作用。 如果我在公開部分進行此操作,則不知道是否建議這樣做。 我在問自己,在控制器或助手中做這樣的事情是否更好?

你能啟發我嗎?

如果需要公開,編寫公共方法是可以的,這不是一個懸而未決的冒犯之類的事情。 但是,您描述的方法不應該由用戶使用-無需將產品邏輯放入用戶模型中,並且通過將產品傳遞給用戶方法來更改產品絕對是不好的。 這也是一個非常短的方法,因此將其放入方法中並沒有太多收獲-這只是意味着如果我看到take! 然后我必須去查找它的定義位置才能理解它。 您還應該只使用! 在可能引發異常或更改調用它們的對象的方法的末尾。

將這個邏輯放在控制器中會很好而且更清楚,但是通常來說,如果公共方法不能私有的話,這沒有什么不對的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM