Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 4 Rails嵌套对象创建_Ruby On Rails 4_Nested - Fatal编程技术网

Ruby on rails 4 Rails嵌套对象创建

Ruby on rails 4 Rails嵌套对象创建,ruby-on-rails-4,nested,Ruby On Rails 4,Nested,我有一个项目与下面的场景 三个目标: 客户端:真实世界的客户端 用户:使用门户的用户 部门:用户为之工作的客户(XYZ.com、ABC.com) 注册页面有:名字、用户名、密码、客户名、电子邮件 客户端只有一个字段值:客户端名称 名字、用户名、密码、客户名、电子邮件是用户的名称 现在我想要的是创建一个以ClientName作为部门名称的部门,并将用户与部门ID相关联。 用户有一个现场部门id即使您重新制定了,它仍然不清楚。所以我会用我自己的解释。另外,您没有指定是使用Mongoid还是Activ

我有一个项目与下面的场景

三个目标:

客户端:真实世界的客户端

用户:使用门户的用户

部门:用户为之工作的客户(XYZ.com、ABC.com)

注册页面有:名字、用户名、密码、客户名、电子邮件

客户端只有一个字段值:客户端名称 名字、用户名、密码、客户名、电子邮件是用户的名称

现在我想要的是创建一个以ClientName作为部门名称的部门,并将用户与部门ID相关联。
用户有一个现场部门id

即使您重新制定了,它仍然不清楚。所以我会用我自己的解释。另外,您没有指定是使用Mongoid还是ActiveRecord。我将使用某种Mongoid风格,因为它可以生成干净的模型化,但也可以随意用ActiveRecord来替换

模型

class User
  has_one :department
  has_one :client
  accepts_nested_attributes_for :client
  accepts_nested_attributes_for :department

  field :first_name
  field :password
  field :username
  field :email

class Client
  belongs_to :user

  field :name

class Department
  belongs_to :user
  field :name
您的_controller.rb

def new
  @user = User.new
  @user.client = Client.new
  @user.department = Department.new
end

def create
  if @user = User.create(user_params)
    redirect_to @user
  else
    render 'new'
  end
end

private
  def user_params
    # Set department.name as client.name
    if params[:user] and params[:user][:department] and params[:user][:client]
      params[:user][:department][:name] = params[:user][:client][:name]
    end
    params.require[:user].permit(
      :first_name, :password, :username, :email,
      client_attributes: [:id, :name],
      department_attributes: [:id, :name]
    )
  end
_form.html.erb

<%= form_for :user do |user| %>
  <%= user.text_field(:name) %>
  ...

  <%= user.fields_for :client do |client| %>
    <%= client.text_field(:name) %>
  <% end %>

  <%= user.fields_for :department do |department| %>
    <p class="text-info">A department will be created with the same name as the client</p>
  <% end %>
<% end %>

...

将创建一个与客户同名的部门


即使您无法发布代码,也请清楚地使用您的符号。你的型号是什么?你提到用户、客户、部门,客户和用户之间的区别是什么?用户是否拥有多个:客户端?即使您在一家公司工作,安全方面的经验法则是,只要用于数据加密的密钥保持安全,就可以知道实现的所有内容。如果您是Rails新手,则更有可能引入安全漏洞,攻击者可以自己轻松发现这些漏洞。。。只是说说而已。更清晰地编辑了问题。关于代码是什么。我不打算在办公室外复制粘贴任何数量的代码。这是一项政策。我的剪贴板和活动由管理员观看。谢谢你,伙计。对不起,我不能更好地解释我的问题。但这正是我要找的。非常感谢。