0

私は Rails を初めて使用し、has_one と has_many の関係に戸惑っています。

USER と LOCATION の 2 つのモデルがあります。

各ユーザーには場所があり、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

これは正しくなく、私にとってはうまくいきません。ヘルプやポインタをいただければ幸いです。

Rails ブックでは、これらの関連付けの作成方法のみが指定されています。これらの関連付けでレコードを保存する方法についてではありません。

4

1 に答える 1

0

saveforを変更しsave!て例外を発生させ、何が機能していないかを確認します。

別の方法は

@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 に答える