আপনি ডক্সটি কিছুটা ভুলভাবে পড়ছেন। ক্লায়েন্ট সংগ্রহ থেকে some_firm.client.new
একটি নতুন Client
অবজেক্ট তৈরি করছে , এবং এটি স্বয়ংক্রিয়ভাবে এতে সেট করতে firm_id
পারে some_firm.id
, অন্যদিকে ডক্স কল করছে Client.new
যা কোনও ফার্মের আইডির কোনও জ্ঞান নেই, তাই এটি এটি firm_id
পাস করার প্রয়োজন।
শুধুমাত্র মধ্যে পার্থক্য some_firm.clients.new
এবং some_firm.clients.build
যে মনে করা হয় build
এছাড়াও নতুন তৈরি ক্লায়েন্ট যোগ clients
সংগ্রহ:
henrym:~/testapp$ rails c
Loading development environment (Rails 3.0.4)
r:001 > (some_firm = Firm.new).save # Create and save a new Firm
#=> true
r:002 > some_firm.clients # No clients yet
#=> []
r:003 > some_firm.clients.new # Create a new client
#=> #<Client id: nil, firm_id: 1, created_at: nil, updated_at: nil>
r:004 > some_firm.clients # Still no clients
#=> []
r:005 > some_firm.clients.build # Create a new client with build
#=> #<Client id: nil, firm_id: 1, created_at: nil, updated_at: nil>
r:006 > some_firm.clients # New client is added to clients
#=> [#<Client id: nil, firm_id: 1, created_at: nil, updated_at: nil>]
r:007 > some_firm.save
#=> true
r:008 > some_firm.clients # Saving firm also saves the attached client
#=> [#<Client id: 1, firm_id: 1, created_at: "2011-02-11 00:18:47",
updated_at: "2011-02-11 00:18:47">]
আপনি যদি কোনও অ্যাসোসিয়েশনের মাধ্যমে কোনও অবজেক্ট তৈরি করে থাকেন build
তবে এটির চেয়ে বেশি পছন্দ করা উচিত new
কারণ বিল্ডটি আপনার ইন-মেমোরি অবজেক্টকে রাখে some_firm
(এই ক্ষেত্রে) কোনও বিষয়বস্তুতে ডাটাবেসে সংরক্ষণ করার আগেও সামঞ্জস্যপূর্ণ অবস্থায় in