Ruby on rails 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
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。请记住,你正在进行一对一的关系