私は共有のARモデルと他のものの束を保つ共有エンジンを持っています。以下 は私のユーザーARモデルRailsエンジンモデルから継承するときの関連問題
module Shared
class User < ApplicationRecord
validates_presence_of :password, on: :create
# validates_uniqueness_of :email
# validates_uniqueness_of :phone_number
has_many :apps
end
end
されており、次のように私は、メインレールのアプリ(Analytics
)内の子のユーザーを持っている:
class User < Shared::User
self.table_name = 'users'
end
私はレールのアプリにこのエンジンをマウントするときに、動的にI私は、挿入データベースのレコードを見つけることが、私は連想を使用する際の問題を開始することができ、上記で
def model_const(const)
# shell_app is set to 'Analytics' somewhere else
shell_app.constantize.const_get const
rescue
Shared.const_get const
end
:法の下に使用して「修正」(Analytics::User
)を見つけます
user = model_const('User').create ... # works, returns a Analytics::User instance
user.apps # fails with below error
(例えばvalidates_uniqueness_of
呼び出し上記)iationsとARのバリデータも
ActiveRecord::StatementInvalid (PG::UndefinedTable: ERROR: relation "shared_apps" does not exist
LINE 8: WHERE a.attrelid = '"shared_apps"'::regclas...
^
: SELECT a.attname, format_type(a.atttypid, a.atttypmod),
pg_get_expr(d.adbin, d.adrelid), a.attnotnull, a.atttypid, a.atttypmod,
(SELECT c.collname FROM pg_collation c, pg_type t
WHERE c.oid = a.attcollation AND t.oid = a.atttypid AND a.attcollation <> t.typcollation),
col_description(a.attrelid, a.attnum) AS comment
FROM pg_attribute a LEFT JOIN pg_attrdef d
ON a.attrelid = d.adrelid AND a.attnum = d.adnum
WHERE a.attrelid = '"shared_apps"'::regclass
AND a.attnum > 0 AND NOT a.attisdropped
ORDER BY a.attnum
):
(同じエラーが共有:: UserモデルにおけるI非コメントバリデータとは、新しいレコードを作成しようとした場合)私は作成しており、共有エンジンコードのapps
にアクセスしようとしていることに注意してください。
ありがとうございます!