簡體   English   中英

Rails:范圍內的方法

[英]Rails: Methods in scopes

我的一種模型具有以下方法:

  def remaining_stock
    if initial_stock
      initial_stock - bought_items
    else
      0
    end
  end

在控制器中,我要提取用戶擁有的剩余庫存大於零的所有物品。 簡而言之,類似

@remaining_items = Item.where(:user_id => current_user.id).{somehow specify that remaining stock > 0}

該方法將類似於

def has_remaining_stock
  remaining_stock > 0
end

但是我不知道如何將其添加到查詢本身,或者某種類型的范圍中,它會引入has_remaining_stock(我可以使用:conditions進行范圍調整,但不能使用其他方法進行范圍調整)

任何想法表示贊賞。

簡短的答案是,您無法獲得想要的東西。 記住,您正在生成要發送到數據庫以獲取項目的SQL。 SQL不包括按行運行的Ruby,但是您可以使用它來做其他事情。 就像是:

.where("initial_stock = NULL or (initial_stock - bought_items) > 0")

應該管用。 您可以將其打包為模型的作用域,以獲得更清晰的語義。 您只需要在SQL條件下表達該函數即可。

我想您可以執行以下操作:

scope :has_remaining_stock, where("(initial_stock - bought_items) > 0)")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM