मैं समझने के लिए "उचित" जिस तरह से एक मॉडल के एकत्रित फ़ील्ड प्रारंभ करने में क्या करना चाहते हैं।उचित तरीका रूपों
मान लीजिए कि आप एक मॉडल के लिए कुछ एकत्रित फ़ील्ड करते हैं:
class User
has_one :address
accepts_nested_attributes_for :address
end
और तुम (इस मामले में address
) उन विशेषताओं को प्रारंभ करने के लिए उन्हें एक fields_for
कॉल में उपयोग करने के लिए की जरूरत है।
अब तक मैं यह करने के लिए तीन तरीके के बारे में सोचा है।
पहले, मॉडल पर after_initialize
हुक:
class User
after_initialize :init_address
protected
def init_address
address ||= build_address
end
फिर हम नियंत्रक में प्रारंभ है:
class UsersController
def new
@user = User.new
@user.build_address
end
end
और अंत में, हम हमारे लिए यह करने के लिए एक सहायक विधि हो सकता है:
module FormHelpers
def setup_user(user)
user.address ||= user.build_address
user
end
end
# view
<%= form_for setup_user(@user)... %>
क्या कोई मानक या "सर्वोत्तम अभ्यास" जैसा कुछ भी है परिदृश्य है? आप यह कैसे करते हैं और क्यों?
एक बेहतर समाधान की कमी में, मैं एक मणि है कि इस का ख्याल रखता है लेखन समाप्त हो गया: https://github.com/febuiles/auto_build –
एक पुरानी पोस्ट की तरह लग रहा। आप रेल का किस संस्करण का उपयोग कर रहे हैं? –