0

我是 Rails 新手,对 has_one 和 has_many 关系有点困惑。

我有两个模型 - 用户和位置。

每个用户都有一个位置,一个位置可以属于许多用户。

所以,我以这种方式创建了它:

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 书籍仅指定如何创建这些关联。不是关于如何保存这些关联的记录。

4

1 回答 1

0

更改savesave!引发异常,看看什么不适合你。

另一种方法是

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

你可能会喜欢接收像params[:users][:name]参数这样的东西,因为例如,如果属性比名称多,你可以做

@user.create(params[:user])
于 2013-04-14T03:33:40.600 回答