【发布时间】:2023-03-03 03:25:01
【问题描述】:
Rails 中模型的辅助方法有合适的位置吗?有控制器和视图的辅助方法,但我不确定放置模型辅助方法的最佳位置。除了向ActiveRecord::Base 添加一个方法之外,我不希望这样做。
更新:看起来关注很有意义。这是我想要的一个例子。某些模型永远无法删除,所以我添加一个总是抛出异常的回调:
before_destroy :nope
def nope
raise 'Deleting not allowed'
end
有顾虑,我可以做这样的事情吗?
class MyModel < ActiveRecord::Base
include Undeletable
end
module Undeletable
extend ActiveSupport::Concern
included do
before_destroy :nope
end
def nope
raise 'Deleting not allowed'
end
end
这是 Rails 的做法吗?
【问题讨论】:
-
你为什么不使用普通的旧 Ruby 模块并将它混合到你想要的所有类中?
-
“模型助手”是什么意思?也许您正在寻找装饰师?
-
如果你举一个我认为的例子会有所帮助,然后人们可以就惯例提出建议:有很多方法可以做任何事情,但通常坚持惯例是个好主意。
-
能否给
ActiveRecord::Base添加一个例子(代码)你想添加什么样的方法。 -
一个普通的旧 Ruby 模块是有道理的,这就是我要做的,只是想有一种更多的 Rails 方法可以做到这一点。我认为这与关注有关。我添加了一个示例。
标签: ruby-on-rails ruby ruby-on-rails-4 model ruby-on-rails-4.2