Я застрял и не знаю, как добавить «account_id» пользователю, когда их учетная запись создается через devise_invitble (при отправке первоначального приглашения).Добавление атрибутов пользователю, когда приглашение отправлено через Devise_Invitable
Основной рабочий процесс - владелец создает учетную запись, тогда владелец учетной записи может пригласить кого-либо использовать приложение с изобретением. Мне нужно отслеживать, что пользователь связан с учетной записью, поскольку учетная запись имеет только «x» число пользователей на основе типа плана.
class InvitationsController < Devise::InvitationsController
after_action :update_user_account, :only => [:create]
def update_user_account
@user = User.find_by_email(params[:user][:email])
@user.update_attributes(:account_id => current_account.id)
end
end
это то, что я использую сейчас, однако, когда я тяну, что пользователь в рельсах консоли и смотреть на него на выходе сервера, пользователи account_id по-прежнему равна нулю.
это учетная запись Модель:
class Account < ApplicationRecord
include ImageUploader[:image]
# Constants
RESTRICTED_SUBDOMAINS = %w(www patrolvault admin test type taurenapplabs taurenmaterialservices)
# Before Actions
before_validation :downcase_subdomain
# Relationships
belongs_to :owner, class_name: 'User', optional: true
accepts_nested_attributes_for :owner
has_many :users
# Validations
validates :owner, presence: true
validates :subdomain, presence: true,
uniqueness: { case_sensitive: false },
format: { with: /\A[\w\-]+\Z/i, message: 'Contains invalid characters.' },
exclusion: { in: RESTRICTED_SUBDOMAINS, message: 'Restricted domain name'}
has_one :plan
accepts_nested_attributes_for :plan
private
def downcase_subdomain
self.subdomain = self.subdomain.downcase
end
end
Это модель пользователя:
class User < ApplicationRecord
# Constants & Enums
USER_LIMITS = ActiveSupport::HashWithIndifferentAccess.new(
#Plan Name #Auth Users
responder: 6,
first_responder: 12,
patrol_pro: 30,
guardian: 60
)
# Before Actions
# Devise Modules
devise :database_authenticatable, :registerable, :recoverable, :rememberable, :trackable, :validatable, :confirmable, :invitable, :lockable, :timeoutable
# Relationships
belongs_to :account, optional: true
# Validations
validates :f_name, presence: true
validates :l_name, presence: true
validates :date_of_birth, presence: true
#validate :must_be_below_user_limit
# Custom Methods
def full_name
l_name.upcase + ", " + f_name
end
end
Пожалуйста, Любая помощь здесь будет очень ценится !, это действительно заклинивания меня вверх.
Это звучит как запись пользователя может не сохраняются, поскольку проверки не проходят. Вы уверены, что у пользователя есть f_name, l_name и date_of_birth? – infused
@ infused, когда я отправляю приглашение, единственные заполненные поля в консоли - это электронная почта и все привлекательные поля. Когда пользователь принимает приглашение, им предоставляется поле, которое позволяет им добавлять свое имя и пароль, все это проходит и присутствует в консоли и регистрируется ... единственным элементом, который не является дозой для обновления, является account_id. - плохо добавьте показания консоли выше. –
Это потому, что '@ user.update_attributes (: account_id => current_account.id)' терпит неудачу из-за ошибок проверки. – infused