Создание приложения rails 5 с использованием devise и acts_as tennant.
Не слишком уверен, где я иду не так, я пытаюсь создать учетную запись и владелец учетной записи в той же форме, под учетной записи / новой.
в настоящее время я получаю следующую ошибку:
ArgumentError в / accounts / new Не найдено никакой ассоциации для имени `user '.Это уже определено?
Я просмотрел свои модели и контроллеры и, похоже, не могу понять это.
Account.rb
class Account < ApplicationRecord
RESTRICTED_NAMES = ["www", "admin", "loadflo"]
has_many :users
before_validation :downcase_name, :create_account_name
strip_attributes only: :account_name, regex: /[^[:alnum:]_-]/
validates :user, presence: true
validates :name, presence: true,
uniqueness: {case_sensitive: false},
exclusion: { in: RESTRICTED_NAMES, message: "This is a restricted name. Please try again or contact support." }
accepts_nested_attributes_for :user
private
def downcase_name
self.name = name.try(:downcase)
end
def create_account_name
self.account_name = self.name
end
end
accounts_controller.rb
class AccountsController < ApplicationController
before_action :set_account, only: [:show, :edit, :update, :destroy]
def index
@accounts = Account.all
end
def show
end
def new
@account = Account.new
@account.build_user
end
def edit
end
def create
@account = Account.new(account_params)
if @account.valid?
@account.save
flash[:success] = "Account created successfully."
redirect_to new_user_session_path
else
render action: 'new'
end
end
def update
end
def destroy
end
private
def account_params
params.require(:account).permit(:name, user_attributes: [:email, :password, :password_confirmation, :first_name, :last_name, :mobile_tel])
end
def set_account
@account = Account.find(params[:id])
end
end
User.rb
class User < ApplicationRecord
acts_as_tenant(:account)
# Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable, :trackable and :omniauthable
devise :database_authenticatable, :registerable, :recoverable, :rememberable, :validatable, :confirmable, :trackable
end
У меня также есть account_id: целое число, установленное в моей пользовательской таблице, чтобы оно могло создать ассоциацию при создании следующим образом:
add_column :users, :account_id, :integer
add_index :users, :account_id
Заранее спасибо за вашу помощь здесь.Я думаю, что это что-то маленькое, что я пропускаю.