如何通过设计gem将用户创建设置为默认开发者



我正在开发一个rails应用程序(ruby 3和rails 7(。我有两个模型。一个是User(来自设计宝石(,另一个是Role。用户属于角色,角色有许多用户。我想做的是,当一个新用户注册时,他/她应该是默认的开发人员。

我解决这个问题的一种方法是在用户的迁移文件中写入默认值,但我的主管禁止这种方法。还有别的办法吗。我不想用rolify或任何其他宝石来扮演角色,我有单独的角色表。

角色:管理员、开发人员

我做到了。当name, bio。。。当使用宝石设计

宝石设计https://www.rubydoc.info/github/plataformatec/devise/Devise/ParameterSanitizer

在设计/注册/new.html.erb 中


<%= form_for(resource, as: resource_name, url: registration_path(resource_name)) do |f| %>
<%= render "devise/shared/error_messages", resource: resource %>
// Hidden role_id. EX: role_id is 1 as Developer
<%= f.hidden_field :role_id, autofocus: true, value: "1", autocomplete: "name" %>
<div class="field">
<%= f.label :email %><br />
<%= f.email_field :email, autofocus: true, autocomplete: "email" %>
</div>
<div class="field">
<%= f.label :password %>
<% if @minimum_password_length %>
<em>(<%= @minimum_password_length %> characters minimum)</em>
<% end %><br />
<%= f.password_field :password, autocomplete: "new-password" %>
</div>
<div class="field">
<%= f.label :password_confirmation %><br />
<%= f.password_field :password_confirmation, autocomplete: "new-password" %>
</div>
<div class="actions">
<%= f.submit "Sign up" %>
</div>
<% end %>
class ApplicationController < ActionController::Base
before_action :configure_permitted_parameters, if: :devise_controller?
def configure_permitted_parameters
devise_parameter_sanitizer.permit(:sign_up, keys: [:role_id])
devise_parameter_sanitizer.permit(:account_update, keys: [:website, :bio])
end
end

最新更新