Я использую устройство для аутентификации пользователей. Есть две модели User
и Profile
, которые связаны друг с другом, как этотhas_one принадлежит_автоматизация атрибута атрибута
#app/model/user.rb
class User < ApplicationRecord
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
has_one :profile, dependent: :destroy
enum role: [:admin, :seller, :buyer]
end
#app/model/profile.rb
class Profile < ApplicationRecord
belongs_to :user
end
Как вы можете видеть, у меня есть также роль для пользователей.
Здесь представлены формы для регистрации обеих моделей.
#user registration form
<%= simple_form_for(resource, as: resource_name, url: registration_path(resource_name)) do |f| %>
...
<%= f.select :role, collection: User.roles.keys.last(2) %>
<%= f.input :mobile_number, required: true, autofocus: true %>
...
<% end %>
#profile registration form
<%= simple_form_for(@profile) do |f| %>
...
<% if current_user.seller? %>
<%= f.input :location, required: true %>
<% else %>
<%= f.input :company_code, required: true %>
<% end %>
...
<% end %>
Проблема
Когда текущий пользователь seller
мне нужно проверить наличие в :location
, когда пользователь buyer
затем проверить наличие :company_code
. Как я могу это достичь? Я ценю любую помощь, спасибо!
Является ли 'location' атрибутом в таблице профиля? –
@Ahmadhamza nope свой атрибут таблицы профилей –