0
年長則n分鐘前所有用戶我有User
模型和Group
模型。 User
belongs_to Group
。 Group
有一個屬性check_minutes
。Rails的:如何找到其中n存儲在加入了羣
我想創建一個用戶模型中的兩個範圍:old
和fresh
。老用戶是created_at
之前的用戶,比user.group.check_minutes.ago
舊。新用戶是created_at
比user.group.check_minutes.ago
更新的用戶。
我寫的範圍:
scope :old, joins(:group).where("`users`.`created_at` <=
DATE_SUB(NOW(), INTERVAL `groups`.`check_minutes` MINUTE)")
scope :fresh, joins(:group).where("`users`.`created_at` >
DATE_SUB(NOW(), INTERVAL `groups`.`check_minutes` MINUTE)")
和規格:
describe "scopes" do
let(:group) {Group.make :check_minutes => 20}
let(:old_user) {User.make :group => group, :created_at => 30.minutes.ago}
let(:new_user) {User.make :group => group, :created_at => 10.minutes.ago}
context "#fresh" do
it "should scope all new users" do
User.fresh.should eq([ new_user ])
end
end
context "#old" do
it "should scope all old users" do
User.old.should eq([ old_user ])
end
end
end
規格上失敗fresh
(爲old
它是確定):
expected [#<User id: 7967, ... >]
got []
有什麼不對?如何強制我的範圍\規格工作良好?
如果你知道更好的方式來組織範圍這將是偉大的!
對不起被連接在SO俄羅斯的文章,但我已經在我的博客涵蓋這樣的:http://leonid.shevtsov.me/ru/time-now-vs-time-zone-now-in -rails –
真的很好,+1 – apneadiving
謝謝!有用。文章非常有用! Спасибо:) – petRUShka