मैं गतिशील रूप से अनुरोध के दौरान ActiveRecord मॉडल वर्ग का तालिका नाम बदलना चाहता हूं।रेल 3/ActiveRecord: गतिशील रूप से अनुरोध के दौरान तालिका नाम को कैसे बदलें/बदलें?
mydb:
sample_data_12222
sample_data_12223
sample_data_12224
sample_data_12225
...
तो, मुझे क्या करना चाहते है ...
_1:
उदाहरण के लिए, इसी तरह के कई संरचना (कॉलम) होने टेबल नहीं है। आधार मॉडल वर्ग को परिभाषित करना:
class SampleData < ActiveRecord::Base
_2। की तरह अनुरोध के दौरान लक्ष्य तालिका में बदलना:
def action_method
SampleData.set_table_name "sample_data_#{params[:id]}"
@rows = SampleData.all
ऐसा लगता है कि कोड के ऊपर सही है अगर यह गैर पिरोया पर्यावरण पर चलाए जाने के दौरान (जैसे पैसेंजर/mod_rails पर)। लेकिन यह धागा-सुरक्षित नहीं है, इसलिए यह थ्रेडेड-पर्यावरण (जैसे जेआरबी-रैक पर) पर काम नहीं कर सकता है।
इसके अलावा मैं इस तरह delived वर्ग बनाने की कोशिश की:
def action_method
@model_class = Class.new(SampleData)
@model_class.set_table_name "sample_data_#{params[:id]}"
@rows = @model_class.all
लेकिन यह मेमोरी लीक कारण है, हालांकि delived मॉडल वर्ग किसी भी अधिक इस्तेमाल नहीं किया है अनुरोध पूर्ण होने के बाद। :(
वहाँ ऐसा करने के लिए एक बेहतर तरीका है
आपके विचार के लिए धन्यवाद, मैं कुछ इसी तरह की तलाश कर रहा था (लेकिन थोड़ा और सरल)। उम्मीद है कि मेरा जवाब (अभी भी) आपकी मदद करेगा @ – Veger
धन्यवाद, और आपके उत्तर को स्वीकार करने के लिए खेद है। ;) मैं आपके उत्तर के समान कुछ भी पहुंचा। – kaorukobo