Wed*_*dTM 1 ruby module mongoid
我试图仅在满足条件时才包括模块。
module PremiumServer
def is_premium
true
end
end
class Server
include Mongoid::Document
include PremiumServer if self.premium
field :premium, :type => Boolean, :default => false
end
Run Code Online (Sandbox Code Playgroud)
这是行不通的,我不知道为什么。有人可以告诉我如何根据满足上述条件的条件来包含模块吗?
谢谢!
编辑:
我在这里找到了解决问题的答案:Mongoid和载波
但是,我将问题授予最高答案,因为这可能是更有用的方法。
包括在班级发生的情况。您的高级属性处于实例级别。
有一些方法可以在每个实例级别进行包含,但是我不建议您这样做。
在这里,您最好使用继承
class Server; .. ; end
class PremiumServer < Server; ..; end
Run Code Online (Sandbox Code Playgroud)
或者,在您的情况下,如果唯一的方法是is_premium
将其添加到Server类并使其返回premium变量
def is_premium
self.premium
end
Run Code Online (Sandbox Code Playgroud)
哦,您应该在ruby中使用“问题”方法。尽管Mongoid为布尔值提供了这些。
def premium?
self.premium
end
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3994 次 |
最近记录: |