0

我是一个新手,我想知道我的应用程序是否会在不久的将来失败,因为我不了解 Rails 的所有细节。所以我更愿意问你:-)

我有一个用户和一个产品模型,我想创建一个可以这样使用的方法:

@user.take!(product)

所以我在我的用户模型中写了以下行:

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

但是,如果我在模型的私有部分这样做,它就不起作用。如果我在公共部分这样做,我不知道是否推荐。我在问自己在控制器或助手中做类似的事情是否会更好......

你能启发我吗?

4

1 回答 1

0

如果需要公开,编写公共方法很好,这不是悬而未决的罪行或类似的事情。您描述的方法不应该在用户身上 - 不需要将产品逻辑放在用户模型中,通过将产品传递给用户方法来更改产品绝对是不好的。它也是一个非常短的方法,因此将它放入一个方法中并没有太多的收获——它只是意味着如果我看到了,take!那么我必须去找到它的定义位置才能理解它。您还应该只!在可能引发异常或更改调用它们的对象的方法的末尾使用。

将这个逻辑放在控制器中会很好,也更清晰,但总的来说,如果公共方法不能是私有的,那么它们没有任何问题。

于 2013-06-03T12:09:53.760 回答