यह रूबी/रेल के साथ मेरे साथ सबसे अजीब बात है।ऑब्जेक्ट लोड नहीं होता
मेरे पास एक मॉडल है, स्टोर, जिसमें है_many शेष। और मेरे पास एक तरीका है जो मुझे स्टोर की मुद्रा के आधार पर डिफ़ॉल्ट संतुलन देता है।
स्टोर मॉडल।
class Store < ActiveRecord::Base
has_many :balances, as: :balanceable, dependent: :destroy
def default_balance
#puts self.inspect <- weird part.
balances.where(currency: self.currency)[0]
end
...
end
शेष मॉडल।
class Balance < ActiveRecord::Base
belongs_to :balanceable, :polymorphic => true
...
end
ठीक है, तो फिर शेष नियंत्रक में मैं कार्रवाई दिखाने के लिए, कि मुझे एक विशिष्ट संतुलन या डिफ़ॉल्ट एक दे देंगे।
बैलेंस नियंत्रक।
class Api::Stores::BalancesController < Api::Stores::BaseController
before_filter :load_store
# Returns a specific alert
# +URL+:: GET /api/stores/:store_id/balances/:id
def show
#puts @store.inspect <- weird part.
@balance = (params[:id] == "default") ? @store.default_balance : Balance.find(params[:id])
respond_with @balance, :api_template => :default
end
...
private
# Provides a shortcut to access the current store
def load_store
@store = Store.find(params[:store_id])
authorize! :manage, @store
end
end
अब यहाँ जहां अजीब हिस्सा आता है मैं इस शो कार्रवाई के लिए एक फोन करना है ...
;
प्राप्त/API/भंडार/148/शेष राशि/डिफ़ॉल्ट
यह अशक्त रिटर्न (क्योंकि मुद्रा अशक्त के रूप में स्थापित किया गया था, और वहाँ शून्य मुद्रा के साथ कोई शेष है) और: उदाहरण के लिए एसक्यूएल उत्पन्न क्वेरी है:
SELECT `balances`.* FROM `balances` WHERE `balances`.`balanceable_id` = 148 AND `balances`.`balanceable_type` = 'Store' AND `balances`.`currency` IS NULL
तो मैं नहीं जानता कि क्यों ... यह NULL रूप मुद्रा स्थापित कर रही है। लेकिन अगर उस प्रक्रिया में किसी भी जहां में मैं डाल
या default_balance
विधि के अंदर @ store.inspect कहते हैं:
self.inspect डालता
यह जादुई काम करता है !!!
तो मुझे नहीं पता कि यह क्यों हो रहा है? ... ऐसा लगता है कि स्टोर ऑब्जेक्ट लोड नहीं हो रहा है जब तक कि मैं का निरीक्षण करता हूं "या ऐसा कुछ।
धन्यवाद
'तालिका भंडार का एक स्तंभ currency' है? – Yanhao
हां, यह है। 'मुद्रा: स्ट्रिंग (255)' – esbanarango
क्वेरी –