Ruby on rails Rails模型关联和关系

Ruby on rails Rails模型关联和关系,ruby-on-rails,ruby-on-rails-4,Ruby On Rails,Ruby On Rails 4,我是rails新手,目前正在尝试创建一个应用程序,但我似乎无法让它工作。这是我在模型中的设置 class User < ActiveRecord::Base has_one :doctor, dependent: :destroy accepts_nested_attributes :doctor end class Doctor < ActiveRecord::Base belongs_to :user, :dependent => :destroy end

我是rails新手,目前正在尝试创建一个应用程序,但我似乎无法让它工作。这是我在模型中的设置

class User < ActiveRecord::Base
  has_one :doctor, dependent: :destroy
  accepts_nested_attributes :doctor
end

class Doctor < ActiveRecord::Base
  belongs_to :user, :dependent => :destroy
end
class用户:destroy
结束
在my users\u controller中,以下是我的代码:

class UsersController < ApplicationController

    def show
        @user = current_user
    # render text: @user.inspect
    end

  def new
    @user = User.new
    @user.build_doctor`
  end

  def create
    # binding.pry
    @user = User.new(user_params)

    if @user.save
        sign_in @user
        redirect_to dashboard_path
      else
        render 'new'
      end
  end


  private 
        def user_params
            params.require(:user).permit(:role, :lastname, :firstname, :middlename, :email, :password, :password_confirmation, :doctor_attributes => [:institution, :license_number])
        end
end
class UsersController[:institution,:license\u number])
结束
结束
我的看法是:

<ul id="cbp-bislideshow" class="cbp-bislideshow">
    <li>
    <%= image_tag "blur1.jpg" %>
    </li>
    <li>
    <%= image_tag "blur2.jpg" %>
    </li>
</ul>

<% provide(:title, 'Sign Up') %>
<%= form_for(@user) do |f| %>

    <div class="sign-up-wrapper divided-wrapper cf">

        <div class="left-section">
            <h3 class="section-title">JOIN US AND LET'S CHANGE THINGS</h3>


                <div class="row">
                    <div class="w49 pull-left">
                        <%= f.text_field :firstname, class: "input-text personal ", placeholder: 'FIRSTNAME' %>
                    </div>
                    <div class="w49 pull-right">
                        <%= f.text_field :lastname, class: "input-text personal", placeholder: 'LASTNAME' %>
                    </div>
                    <%= f.hidden_field :role, value: :doctor %>
                </div>

                <div class="row">
                    <%# f.text_field :specialization, class: "input-text personal ", placeholder: 'SPECIALIZATION' %>
                </div>
            <%= f.fields_for :doctors do |p| %>
                <div class="row">
                    <%= p.text_field :institution, class: "input-text personal ", placeholder: 'INSTITUTION' %>
                </div>

                <div class="row">
                    <%= p.text_field :license_number, class: "input-text personal ", placeholder: 'LICENSE NUMBER' %>
                </div>



            <% end %>


            <span class="remind bottom-message"> ONCE INSIDE DON'T FORGET TO UPDATE YOUR PROFILE WITH MORE DETAILS </span>
        </div>

        <div class="right-section">
            <h3 class="section-title"></h3>

            <div class="row">
                <%= f.text_field :email, class: "input-text personal ", placeholder: 'EMAIL' %>
            </div>

            <div class="row">
                <%= f.password_field :password, class: "input-text personal ", placeholder: 'PASSWORD' %>
            </div>

            <div class="row">
                <%= f.password_field :password_confirmation, class: "input-text personal ", placeholder: 'CONFIRM PASSWORD' %>
            </div>

            <div class="row cf">
                <%= f.submit class: 'btn-join btn', value: 'JOIN NOW' %>
            </div>

            <div class="row">
                <a href="#" class="btn-flip-social">SIGN UP WITH FACEBOOK / TWITTER ACCOUNT?</a>
            </div>
        </div>
    </div>
<% end %>
加入我们,让我们改变现状 一旦进入,别忘了用更多细节更新你的个人资料
每次我执行这些部分时,只填充用户模型,而不填充医生表?我的代码有问题吗

编辑

将医生属性更改为医生属性 将@user.doctor.build`更改为@user.build\u doctor

在日志中。我看到了这个错误--->未经许可的参数:医生


所以在理论上,我认为我们知道问题出在哪里,但我不知道如何在强_参数中解决这个问题。我还没有尝试在rails中使用具有可接受的\u嵌套属性\u的强\u参数,这是我第一次尝试。任何解决方案?

在您的
用户参数
模型中,属性
医生属性
应该是
医生属性
,因为它是一种
关系。如果它是一个有许多关系的
,那么它将是
医生属性的
\u属性
前面的部分将是关联的名称


另一个注意事项:如果您希望能够从用户表单更新医生,还应该在
doctor\u属性
数组中包含
id
。尽管现在我想起来了,这可能只是
有许多嵌套关联的需求。我从未尝试过在字段中不包含
id
的情况下执行
has\u one
,将:doctors替换为:doctor。请记住,你正在进行一对一的关系