我在Rails 5模型中得到了这个
m
有没有更优雅的方法来编写第一种方法?
最好将Array_Station_Size = m.getAttr('x', Station_Size)
和def self.payable
open.where.not(:delivery_status => "draft")
end
def self.draft
where(:delivery_status => "draft")
end
def self.open
where(:payment_status => "open")
end
方法链接在一起,如下所示:
open
不幸的是,这不起作用。
答案 0 :(得分:1)
也许您可以使用范围?
scope :payable, -> { open.where.not(:delivery_status => "draft") }
您可以这样使用
YouModel.payable
答案 1 :(得分:1)
要链接否定查询,您可以使用以下技巧:
def self.payable
open.where.not(id: draft)
end
如果您不在乎是否返回ActiveRecord::Relation
对象,则可以使用-
,它返回一个Array
:
def self.payable
open - draft
end
我个人将使用scope
而不是类方法来进行查询:https://guides.rubyonrails.org/active_record_querying.html#scopes。所以:
scope :draft, -> { where(:delivery_status => "draft") }
scope :open, -> { where(:payment_status => "open") }
scope :payable, -> { open.where.not(id: draft) }