0

私はこれらのモデルを持っています:

class User < ActiveRecord::Base 
  has_one  :user_tms, :dependent => :destroy
  accepts_nested_attributes_for :user_tms
end

class UserTms < ActiveRecord::Base
  belongs_to :user
end

UsersController には次のものがあります。

def new
  @user = User.new
  @user.build_user_tms
end

ユーザーフォームは次のようになります。

<%= form_for(@user) do |f| %>
  <%= f.collection_select(:company_id, @companies, :id, :name, :include_blank => true) %>

  <%= f.fields_for(:user_tms) do |tms_form| %>
    <%= tms_form.collection_select(:department, @departments, :id, :description) %>
  <% end %>
<% end %>

かなり基本的なことだと思いますが、フォームを送信するとエラーが発生します:

User tms user can't be blank

そして奇妙なことは、既存のユーザーを編集するとき、すべてが正常に機能することです。ここで何がうまくいかないのですか?ありがとう!

4

3 に答える 3

0

うーん、レールがこれを自動的に処理していると思っていたので、これは本当に奇妙ですが、ネストされたモデルには「ネスター」への参照がないようです。手動で供給してみてください。

@user.user_tms.user = @user

create アクションでこれを行う必要があります。レコードが保存される場所。

どのバージョンのレールを使用していますか?

于 2012-05-25T19:39:29.537 に答える
0

何が問題なのかがわかりました。偽の戻り値で問題を引き起こすメソッドがあり、これら 2 つのモデルとの関係の通常の処理が妨げられました。

于 2012-05-29T09:14:23.793 に答える
0

確かではありませんが、クラスが「s」で終わるのは珍しいことです。

テーブル名は?user_tms または user_tmses。モデルに複数名を設定します。

もし何か他のものを見逃していたかもしれないので、削除します。ただし、新しい開発者にはより良いモデル名を付けるのが最善です。tms はほとんどの人にとってあまり意味がありません。

于 2012-05-25T07:48:56.387 に答える