我的模型有一个字符串字段 ,bar
即a
、b
或c
。它使用 has_ancestry 和acts_as_list。我希望该列表的范围为 (1) 祖先和 (2) bar
,但我希望a
andb
位于同一个列表中,但c
位于另一个列表中。也就是说,如果bar
是a
,b
则 Foo 处于活动状态,应该在一个列表范围内,如果bar
是c
,则它是非活动的,应该单独列出。
这是我认为该模型可能的样子:
class Foo < ActiveRecord::Base
scope :active, -> { where.not(bar: "c") }
has_ancestry
acts_as_list scope: [:ancestry, ???]
end
问题是,如何让acts_as_list 将两个值的范围放在一起?
(例如,类似的东西scope: 'ancestry = \'#{ancestry}\' AND bar = \'bar\''
会根据栏给我三个不同的列表,而不是两个。)
如果我没有正确解释这一点,请告诉我。我在谷歌上看得很远,找不到答案。谢谢!
Rails 4 和 Ruby 2;祖先和acts_as_list的最新版本,但这很灵活。
我应该补充一点,我已经考虑添加另一个等效的数据库列,bar == "c"
但我希望有另一种解决方案。