这主要是关于最佳实践的理论问题。我目前正在编写一个小型浏览器游戏,似乎大多数代码都是用户模型的实际部分。
包括(hasQuest,deleteQuest,isLeader,getAlliance,sendMessage)等等。
我在想,也许User模型代码有点过分了。
问题是在User中使用此功能更自然。例如,当User模型作为实例方法调用时,hasQuest与实际代码中的current_user.hasQuest类似。另一方面,如果作为TavernQuest的类方法调用,它将是TavernQuest.getQuest(current_user),这对我来说在语法上更糟糕。
你怎么看?我的方式是正确的,还是我应该放弃在用户模型中使用太多代码?答案 0 :(得分:2)
模型中的代码是一件好事(与您的控制器相反)...减少模型膨胀的一件事是拥有您包含的模块。
class User
include UserModules::Gameable
end
/lib/user_modules/gameable.rb
module UserModules
module Gameable
def is_leader?
leader? #or whatever
end
end
end
除了缩小user.rb的大小外,还可以提高代码的可重用性。