由于场地有一个字段“featured_level”,可以从0到N.排序属性和随机复发
我需要返回由featured_level,下令但具有相同的随机场馆的秩序场馆featured_level。
UPDATE:
使用给出答案,我有这样的方法:
def self.by_featured_level
all.group_by {|v| v.featured_level}.inject([]) { |memo, (level,values)|
memo << { level => values.shuffle }
}.map { |hash| hash.values }.flatten.reverse
end
但它没有下面的测试(也没有实数的正常工作),我还在努力算起来,使用的测试:
describe "by featured level" do
before do
@venue1 = create(:venue, featured_level: 5)
@venue2 = create(:venue, featured_level: 2)
@venue3 = create(:venue, featured_level: 4)
@venue4 = create(:venue, featured_level: 2)
@venue5 = create(:venue, featured_level: 0)
@venue6 = create(:venue, featured_level: 2)
@venues = Venue.by_featured_level
end
it {
start_with_hightest = @venues.index(@venue1) == 0
expect(start_with_hightest).to be_truthy
}
it {
second_hightest_is_2nd = @venues.index(@venue3) == 1
expect(second_hightest_is_2nd).to be_truthy
}
it {
ends_with_lowest = @venues.last.id == @venue5.id
expect(ends_with_lowest).to be_truthy
}
end
我得到这个错误: TypeError:没有将符号隐式转换为整数 完整测试: http://pastebin.com/XgW3RnjM – fabriciofreitag
是的,提出了一些错误。尝试修订版本。 – zetetic
仍然无法正常工作,我更新了实施和测试的代码。 – fabriciofreitag