0

からHABTMを結合:私も持っているRailsの3.1 - 私が持っている他のコントローラ

class Person < ActiveRecord::Base 
    has_many :people_phones 
    has_many :phones, :through => :people_phones 
end 

class Request < ActiveRecord::Base 
    belongs_to :person 
    belongs_to :phone 
end 

今、誰かが、私は "リクエスト#新しい" フォームを開く要求を呼び出すときに、記入person_id、phone_numberなどの詳細を入力し、「要求#作成」コントローラ#アクションに送信します。

@phone = Phone.find_or_create_by_phone_number(params[:phone][:phone_number]) 

をしかし、どのように私は、これは、コントローラを要求しますから、その電話を持つ人をバインドすることができます:「#で作成要求」で

、私が行うことができますか?

私はpeople_phonesテーブルにレコードを作成することを意味します(存在しない場合)。

答えて

1
User.find(person_id).phones << @phone 

あなたのアプリの仕組みはわかりませんが、あなたはそのアイデアを見ています。 私はそれを見つけた場所を探してみよう(それは一種の関連だ、あなたが知っている

request.person.phones << request.phone 

興味深いものを行うだろう、あなたは要求を持っている、とあなたはそれを「検証」したい場合は、

Blog.new(…).save 
user.blogs << Blog.new(…) 
user.blogs.new(…).save – do not use, no practical use case 
:それはオブジェクトのために必要な

手順は、データベースに保存されるように)長い時間前でした3210

ビルド

Blog.build – not possible 
user.blogs.build(…), user.save – both are required to save to DB 

Blog.create(…) 
user.blogs.create(…) 
+0

おかげで多くを作成します。私はこの "<<"演算子を見たことがなく、私はそれをうまく検索していません。それは何を正確にしていますか? –

+0

'<<'は、要素を配列に追加するためにrubyで使用されます。これは、オブジェクトをデータベースに保存することを除いて、ここでは同じ原則です。私はいくつかの詳細と私の答えを編集します。 – Robin

関連する問題