Ruby on rails 4 Rails嵌套对象创建
我有一个项目与下面的场景 三个目标: 客户端:真实世界的客户端 用户:使用门户的用户 部门:用户为之工作的客户(XYZ.com、ABC.com) 注册页面有:名字、用户名、密码、客户名、电子邮件 客户端只有一个字段值:客户端名称 名字、用户名、密码、客户名、电子邮件是用户的名称 现在我想要的是创建一个以ClientName作为部门名称的部门,并将用户与部门ID相关联。Ruby on rails 4 Rails嵌套对象创建,ruby-on-rails-4,nested,Ruby On Rails 4,Nested,我有一个项目与下面的场景 三个目标: 客户端:真实世界的客户端 用户:使用门户的用户 部门:用户为之工作的客户(XYZ.com、ABC.com) 注册页面有:名字、用户名、密码、客户名、电子邮件 客户端只有一个字段值:客户端名称 名字、用户名、密码、客户名、电子邮件是用户的名称 现在我想要的是创建一个以ClientName作为部门名称的部门,并将用户与部门ID相关联。 用户有一个现场部门id即使您重新制定了,它仍然不清楚。所以我会用我自己的解释。另外,您没有指定是使用Mongoid还是Activ
用户有一个现场部门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新手,则更有可能引入安全漏洞,攻击者可以自己轻松发现这些漏洞。。。只是说说而已。更清晰地编辑了问题。关于代码是什么。我不打算在办公室外复制粘贴任何数量的代码。这是一项政策。我的剪贴板和活动由管理员观看。谢谢你,伙计。对不起,我不能更好地解释我的问题。但这正是我要找的。非常感谢。