我是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仅指定如何创建这些关联。不是如何使用这些关联保存记录。
答案 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])