红宝石 2 和导轨 4
考虑这段代码:
Post.where{
(created_by == user) &
(
(group_id.in [1,2,3,4]) | (event_id.in [5,6,7,8])
)
}
这本身就可以正常工作。
我想做的是(group_id.in [1,2,3,4]) | (event_id.in [5,6,7,8])
从局部变量、方法、块或其他东西中获取并让它来。
我有很多查询,并希望将这段代码包含在一个地方。
我已经尝试了几件事,比如使用带有产量、Proc 和 Lambas 的块。我似乎一直卡在:NameError (undefined local variable or method 'group_id')
注意:我使用的是 squeel,它包含自己的 DSL,instance_eval
用于其块。这应该没问题,因为我可以通过my{<method_name_here>}
.
这是我尝试过的:
viewable_areas = lambda { (group_id.in [1,2,3,4]) | (event_id.in [5,6,7,8]) }
Post.where{
(created_by == user) &
(
my{viewable_areas.call}
)
}
我能得到的最好的是:NameError (undefined local variable or method 'group_id')
我知道一定有办法解决这个问题,只是现在还没有想到。
此外,我正在使用的真实代码比我在这里描述的要复杂得多,但我已经为这个例子简化了它。