[英]How to filter nested hash in Ruby on Rails?
在我的Rails 4應用程序中,我有一個(非ActiveRecord)模型,其中包含用戶可以訂閱的plans
:
class Plan
PLANS = {
'free' => { :name => "Free", :amount => 0, :interval => '', :maximum => FREE_MAXIMUM },
'basic_monthly' => { :name => "Basic", :amount => 500, :interval => 'month', :maximum => BASIC_MAXIMUM },
'basic_yearly' => { :name => "Basic", :amount => 5000, :interval => 'year', :maximum => BASIC_MAXIMUM },
'premium_monthy' => { :name => "Premium", :amount => 1000, :interval => 'month', :maximum => PREMIUM_MAXIMUM },
'premium_yearly' => { :name => "Premium", :amount => 10000, :interval => 'year', :maximum => PREMIUM_MAXIMUM }
}
def self.all
...
end
def self.all_payable
...
end
def self.by_interval(interval)
...
end
end
我已經與ActiveRecord進行了大量合作,但是在這種情況下,我不知道如何過濾哈希值,因此無法將其呈現到前端。
class PagesController < ApplicationController
def pricing
@plans = Plan.all
end
end
如何才能做到這一點?
也許我的方法是完全錯誤的,並且將計划存儲在數組中更容易?
謝謝你的幫助。
數組或哈希將對此起作用。 如果我正確理解您的方法,則您的方法應類似於以下內容。
def self.all
# returns the entire PLANS hash
PLANS
end
def self.all_payable
# only return hash elements that are not free
PLANS.find_all { |k,v| v[:name] != 'Free' }
end
def self.by_interval(interval)
# return all elements where the :interval matches interval
PLANS.find_all { |k,v| v[:interval] == interval }
end
希望這可以幫助!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.