减少Rails中的模型代码

时间:2010-11-29 18:23:17

标签: ruby-on-rails

这主要是关于最佳实践的理论问题。我目前正在编写一个小型浏览器游戏,似乎大多数代码都是用户模型的实际部分。

包括(hasQuest,deleteQuest,isLeader,getAlliance,sendMessage)等等。

我在想,也许User模型代码有点过分了。

问题是在User中使用此功能更自然。例如,当User模型作为实例方法调用时,hasQuest与实际代码中的current_user.hasQuest类似。另一方面,如果作为TavernQuest的类方法调用,它将是TavernQuest.getQuest(current_user),这对我来说在语法上更糟糕。

你怎么看?我的方式是正确的,还是我应该放弃在用户模型中使用太多代码?

1 个答案:

答案 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的大小外,还可以提高代码的可重用性。