gpt4 book ai didi

ruby-on-rails - Ruby on Rails : shared method between models

转载 作者:行者123 更新时间:2023-12-02 13:40:55 25 4
gpt4 key购买 nike

如果我的一些模型有隐私列,有没有一种方法可以编写一个由所有模型共享的方法,我们称之为 is_public?

那么,我希望能够执行 object_var.is_public 吗?

最佳答案

一种可能的方法是将共享方法放入模块中,如下所示(RAILS_ROOT/lib/shared_methods.rb)

module SharedMethods
def is_public?
# your code
end
end

然后您需要在每个应该具有这些方法的模型中包含此模块(即app/models/your_model.rb)

class YourModel < ActiveRecord::Base
include SharedMethods
end

更新:

在 Rails 4 中有一个 new way去做这个。您应该将这样的共享代码放置在 app/models/concerns 中,而不是 lib

您还可以添加类方法并在包含时执行代码,如下所示

module SharedMethods
extend ActiveSupport::Concern

included do
scope :public, -> { where(…) }
end

def is_public?
# your code
end

module ClassMethods
def find_all_public
where #some condition
end
end
end

关于ruby-on-rails - Ruby on Rails : shared method between models,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3461704/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com