【发布时间】:2015-03-02 18:27:01
【问题描述】:
我有一个商店模型。
在我的课堂上,我创建了几种方法,使我的代码更易于阅读。
类似的东西:
# Returns True if the shop has an owner
def is_claimed
return self.owner_id != nil
end
现在我想创建一个返回 Shops 集合的方法。
类似:
def get_all_open
return Shop.where("shops.closed != 1")
end
我只是想知道我应该把它放在哪里,所以它可以从我可能使用的任何地方获得
Shop.all
在我的代码中。
- 如果我将它放在模型中,它将对商店实例可用,这听起来很奇怪。
- 这个方法也属于Shop,所以我不太喜欢放在ApplicationController中。
- 我也考虑过将它放在shops_controller 中,但这样其他控制器就无法轻松使用它了。
我已经在互联网上查找过,但到目前为止还没有找到我喜欢的东西。什么会被认为是 rails 的好习惯?
谢谢
【问题讨论】:
-
或者我实际上是在我的问题中定义辅助方法吗? api.rubyonrails.org/classes/ActionController/Helpers.html 。听起来像。
-
在
Shop模型def self.all_shops; self.all;end内部会不会很好?这里完全有道理。你可以在任何地方调用它,比如Shop.all_shops... -
这绝对是 类方法 的理想选择,正如 Arup 所建议的那样:
def self.get_all_open ...。通过Shop.get_all_open调用。或者,将其设为范围:scope :all_open ....
标签: ruby-on-rails ruby