使用has_many关系来保存记录

时间:2013-04-13 16:55:14

标签: ruby-on-rails ruby ruby-on-rails-3

我是Rails的新手,并且对has_one和has_many关系感到困惑。

我有两个模型 - USER和LOCATION。

每个USER都有一个位置,LOCATION可以属于许多USERS。

所以,我这样创造了它:

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

这不对,对我不起作用。任何帮助或指示将不胜感激。

rails books仅指定如何创建这些关联。不是如何使用这些关联保存记录。

1 个答案:

答案 0 :(得分: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])