Rails最佳实践:模型中的公共方法

时间:2013-06-03 11:48:02

标签: ruby-on-rails ruby-on-rails-4 private-methods

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

我有一个User和一个Product模型,我想创建一个可以像这样使用的方法:

@user.take!(product)

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

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

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

你可以开导我吗?

1 个答案:

答案 0 :(得分:0)

如果公共方法需要公开,那么编写公共方法就没有问题,这不是一种悬而未决的行为或类似的东西。您描述的方法不应该在用户身上 - 不需要将产品逻辑放在用户模型中,并且通过将产品传递给用户方法来更改产品肯定是不好的。这也是一个非常简短的方法,所以把它放到一个方法中并没有太大的收获 - 它只是意味着如果我看到take!那么我必须去找它定义的位置以便明白它。您还应该只在可能引发异常或更改它们被调用对象的方法结尾处使用!

将这个逻辑放在控制器中会更好,更清晰,但一般来说,如果公共方法不能是私有的,那就没有错。

相关问题