Rails ассоциация между пользователем и профилем - PullRequest
0 голосов
/ 03 апреля 2020

Я думаю создать модель User и Role. Пользователь может создать много ролей, которые он хочет. После создания роли пользователь может выбрать роль из списка и назначить себе. Таким образом, каждая роль может иметь много пользователей, и пользователь принадлежит к роли. Но это кажется немного странным, потому что роль должна существовать в первую очередь. Я не уверен, что это правильный способ установить sh отношения между пользователем и ролью, потому что я хочу, чтобы пользователь мог редактировать роль и применять ко всем пользователям.

Если, скажем, пользователь has_one роль и профиль belong_to пользователь. Если пользователь хочет обновить роль, ему нужно отредактировать всех пользователей по одному, что является пустой тратой времени. Вот почему я думаю, что пользователь может создать столько ролей, сколько захочет, затем он сможет выбрать роль из списка и назначить самого пользователя.

Вот мнение:

<%= form_for(@user, remote: true) do |f| %>

<%= f.text_field :email, class: "form-control", autofocus: true, autocomplete: "off" %>
<%= f.check_box :admin, class:"checkbox" %>
<%= f.check_box :owner, class:"checkbox" %>

<%= f.fields_for :user_role do |ff| %>
<%= ff.collection_select :role_id, @roles, :id, :role_name, include_blank: false %>
<% end %>             

<%= f.button "Create",  class: "btn btn-success" %>

<% end %>

Я не уверен, что моя идея была правильной, пожалуйста, посоветуйте. Спасибо.

Ответы [ 2 ]

0 голосов
/ 03 апреля 2020

Это может быть отношение has_one: through.

class User < ApplicationRecord
  has_one :user_role
  has_one :role, through: :user_role
end
class Role < ApplicationRecord
  has_one :user_role
  has_one :user, through: :user_role
end
class UserRole < ApplicationRecord
  belongs_to :user
  belongs_to :role
end

здесь, User сможет создать столько ролей, сколько ему нужно. затем вы можете связать User с Role, который он выберет в таблице соединений.

0 голосов
/ 03 апреля 2020

Ну, я думаю, что Пользователь и Роль имеют отношение 1 к N. Пользователи могут создавать много ролей, но могут назначать только одну из них себе. Если вы хотите знать «Кто создал эту роль?», Роли могут принадлежать и пользователю. (Вам нужно использовать что-то вроде has_one :role_creator, class_name: "User", foreign_key: "role_creator_id")

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...