gpt4 book ai didi

ruby-on-rails - 如何制作 MyClass.method( :var) and MyClass(:var) synonymous in Rails 4

转载 作者:太空宇宙 更新时间:2023-11-03 16:49:06 25 4
gpt4 key购买 nike

网上有很多gem都有这种行为

例如Fabrication Gem有这种行为

你可以通过

创建一个对象
Fabricate(:person)
Fabricate.create(:person)

这是 code但是当我试图模仿那个模式时

# app/services/permissions.rb
class Permissions
def self.call(user)
# ...
end
end

def Permissions(user)
Permissions.call(user)
end

但是Permissions(user)总是返回错误 undefined method 'Permissions' for #<Ability:0x007ff6ea78de88>

能力模型为

# app/models/ability.rb 
class Ability
# ...
def initialize(user)
if user.role == 'Admin'
# ....
elsif user.role == 'Manager'
Permissions(user) # wont work
Permissions.call(user) # works fine
end
end
end

代码很好但是当在 Rails 应用程序中调用时它不起作用..那么如何使这种行为在 Rails 中成为可能

最佳答案

根据评论再次更新,并使用经过测试的解决方法:将 permissions 方法移动到 ability.rb 的顶部,它应该可以工作。

问题是 Rails 对可以从不同文件夹访问的内容有很强的约定。服务文件中的全局方法无法从模型访问,这类似于 View 助手在模型中不可用的事实。

关于ruby-on-rails - 如何制作 MyClass.method( :var) and MyClass(:var) synonymous in Rails 4,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26878629/

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