为什么这个用户没有邀请?

时间:2011-05-01 05:58:01

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

我有一个创建signed_user的表单。这是表格的第一行:

<%= form_for(setup_user(@signed_user)) do |f| %>

setup_user在我的应用程序助手中:

def setup_user(user)
  user.tap do |u|
    u.build_invitation
  end
end

这些是模型关联:

signed_user型号:

has_one :invitation, :foreign_key => "sender_id"

invitation型号:

belongs_to :sender, :class_name => 'SignedUser'

那么为什么在没有邀请的情况下创建用户呢?我检查了我的控制台,用户的邀请是零......

1 个答案:

答案 0 :(得分:0)

你想要的是nested form。文章中提供了所有详细信息,但基本上确保在SignedUser模型中使用accepts_nested_attributes_for。

class SignedUser < ActiveRecord::Base

  ...

  has_one :invitation, :foreign_key => "sender_id"
  accepts_nested_attributes_for :invitation, :allow_destroy => true
  ...

end

如果您希望表单修改邀请模型中的属性(除了SignedUser中的属性),您还需要在表单中使用fields_for。例如:

    <%= form_for setup_user(@signed_user) do |f| %>

      <%= f.label :name %>
      <%= f.text_field :name %>

      // More user form fields

      <%= f.fields_for :invitation do |cf| %>

        <%= cf.label :event_name %>
        <%= cf.text_field :event_name %>

        // More invitation form fields

      <% end %>

      <%= submit_tag %>
    <% end %>