2014-01-10 73 views
0

我的模型有一個字符串字段bar,即a,bc。它使用has_ancestry和acts_as_list。我想列表的範圍是(1)血統,和(2)bar,但我想ab在同一個列表中,但c在另一個列表中。也就是說,如果barab那麼Foo是活動的,並且應該在一個列表範圍內,並且如果barc,那麼它是非活動的並且應該單獨列出。Rails 4:acts_as_list複雜範圍

以下是我認爲該模型可能看起來像:

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 and Ruby 2;最新版本的祖先和acts_as_list,但這很靈活。

我應該補充說,我已經考慮添加另一個數據庫列,相當於bar == "c",但我希望有另一種解決方案。

回答

0

我結束了與before_save回調的附加數據庫列設置它基於baz中的值。我還在考慮切換到排名模式(https://github.com/mixonic/ranked-model)而不是行爲列表,但這是另一個問題。