0

我的模型有一个字符串字段 ,barabc。它使用 has_ancestry 和acts_as_list。我希望该列表的范围为 (1) 祖先和 (2) bar,但我希望aandb位于同一个列表中,但c位于另一个列表中。也就是说,如果barab则 Foo 处于活动状态,应该在一个列表范围内,如果barc,则它是非活动的,应该单独列出。

这是我认为该模型可能的样子:

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"但我希望有另一种解决方案。

4

1 回答 1

0

我最终使用带有before_save回调的附加数据库列,以根据baz. 我也在考虑切换到排名模型(https://github.com/mixonic/ranked-model)而不是作为列表,但这是另一个问题。

于 2014-01-12T19:15:51.397 回答