我的模型有一个字符串字段bar
,可以是a
,b
或c
。它使用has_ancestry和acts_as_list。我希望列表的范围是(1)祖先,(2)bar
,但我希望a
和b
在同一个列表中,但是{{1}在另一个列表中。也就是说,如果c
是bar
或a
,则Foo处于活动状态,应该在一个列表范围内,如果b
是bar
,那么处于非活动状态,应单独列出。
以下是我认为该模型的样子:
c
问题是,如何让acts_as_list将两个bar的值放在一起?
(例如class Foo < ActiveRecord::Base
scope :active, -> { where.not(bar: "c") }
has_ancestry
acts_as_list scope: [:ancestry, ???]
end
之类的东西会给我三个不同的列表,而不是两个。)
如果我没有解释这个权利,请告诉我。我看起来很远谷歌,无法找到答案。谢谢!
Rails 4和Ruby 2;最新版本的祖先和acts_as_list,但这很灵活。
我应该补充一点,我考虑过添加另一个等同于scope: 'ancestry = \'#{ancestry}\' AND bar = \'bar\''
的数据库列,但我希望能有另一个解决方案。
答案 0 :(得分:0)
我最终选择了带有before_save
回调的附加数据库列,以根据baz
中的值进行设置。我也在考虑转换到排名模型(https://github.com/mixonic/ranked-model)而不是行为列表,但这是另一个问题。