RAILS:如何使用列值定义日期范围的范围?

时间:2017-09-13 16:43:42

标签: ruby-on-rails rails-activerecord

我正在尝试创建一个命名范围,我想在其中接收仅在创建后的第一周内更新的记录。 如您所见,我收到列名created_at的错误消息。

scope :shortlived, where("updated_at < ?", (created_at+7.days))


undefined local variable or method `created_at' for #<Class:0xb184725c>

如果您能告诉我可能出现的问题,我将不胜感激。

2 个答案:

答案 0 :(得分:3)

您可以使用特定于数据库的内容。例如对于MySQL:

export class FirstModalComponent implements OnInit {


@ViewChild(BsModalRef) rejectedReasonModal: BsModalRef;
constructor(private modalService: BsModalService, public bsModalRef: BsModalRef) {

}

private modalConfig = {
    animated: true,
    keyboard: false,
    backdrop: true,
    ignoreBackdropClick: true

};
showRejectionModal(template: TemplateRef<any>) {
    this.rejectedReasonModal = this.modalService.show(seconModal, Object.assign({}, this.modalConfig, {class: 'modal-sm'}));
}
rejectPayment() {

    this.modalService.setDismissReason("REJECTED");

    this.rejectedReasonModal.hide();
    this.bsModalRef.hide();

}
}

答案 1 :(得分:2)

这与此处发布的答案类似。如果你正在使用postgreSQL,你可以只比较7天的差异&#39;间隔

scope :shortlived, -> { where("(updated_at - created_at) < '7 days'") }