【问题标题】:Rails best practices : Public methods in modelRails 最佳实践:模型中的公共方法
【发布时间】:2013-05-29 13:26:27
【问题描述】:

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

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

@user.take!(product)

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

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

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

你能启发我吗?

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

    • 谢谢!在那种情况下,我必须在哪个控制器中编写我的 def ?
    猜你喜欢
    • 1970-01-01
    • 2013-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多