2013-04-13 70 views
0

我是Rails的新手,並且被has_one和has_many關係困惑。has_many關係的使用保存記錄

我有兩個模型 - USER和LOCATION。

每個用戶都有一個位置,一個LOCATION可以屬於多個用戶。

所以,我創建這樣說:

class User < ActiveRecord::Base 
    belongs_to :location 
end 

class Location < ActiveRecord::Base 
    has_many :users 
end 

現在,當我想創建一個新用戶,並保存的位置,我應該怎麼辦呢? 是這樣嗎?

@user = User.new 
@user.name = params[:name] 

@loc = Location.new 
@loc.zip = params[:zip] 
@loc.save 

@user.location = @loc 
@user.save 

這是不對的,不適合我。任何幫助或指針,將不勝感激。

導軌書僅指定如何創建這些關聯。不是如何用這些關聯保存記錄。

+1

它應該是工作當您將'@user.loc = loc'更改爲'@user.location = loc' – onurozgurozkan

+0

您需要說明它是如何失敗的。什麼是錯誤信息?另外,表格上的列是什麼?你在'users'表上創建了'location_id'嗎? –

+0

你有location_id作爲用戶的字段嗎? – rovermicrover

回答

0

更改save對於save!引發異常並查看哪些不適用於您。

另一種方法是

@loc = Location.create!(:zip => params[:zip]) 
@user.create!(:name => params[:name], :location_id => @loc.id) 

你可能會喜歡收到類似params[:users][:name]爲參數,因爲實例,如果有更多的屬性比的名字,你可以做

@user.create(params[:user]) 
相關問題