我有一个可以包含几个Betas的Alpha。我想只过滤掉那些不包含任何Betas的Alpha(因此是空的Alphas)。所以我在Alpha中创建了一个类方法,并尝试在Beta的视图中使用它。
class Beta
belongs_to :alpha
end
class Alpha
has_many :betas
def _empty
return self if self.betas.nil?
end
end
#views/betas/form.haml:
=simple_form_for @beta do |f|
f.association :alpha, collection: Alpha._empty
这是我得到的错误:
undefined method '_empty' for #Class:0x0000000551ae50
似乎我在这里缺少基本的,我会感激任何帮助!
答案 0 :(得分:0)
_empty是一个实例方法,它将返回当前实例的值,但它不是适用于Alpha
的全局方法
所以你可能想要添加一个类方法......
def self._empty
Alpha.includes(:betas).where( :betas => { :alpha_id => nil } )
end
请注意,至少有两种方法可以定义类方法...方法名称中包含self
...
def self._empty
......或......
class Alpha
class << self
def _empty
...
end
end
end
仅定义未经修饰的方法使其成为实例方法(例如@my_alpha._empty
)