です。レールコンソールの学生にCustomFields
を追加した後、レールサーバーを起動し、この情報を表示するはずのページに移動しましたが、更新された情報は表示されません。Railsビューで更新されたデータベース情報が表示されない、レールコンソールで情報が正常に取得される<code>Student</code><code>has_many</code><code>CustomField</code>(多型)の行がある<code>Student</code>モデルを持っているコンソール
フィールド名と値のハッシュを返すメソッドget_custom_fields_with_values
があります。レールコンソールで
:
はstudent = Student.all.first
field_attrs = FieldAttributes.create(name: 'Favorite Color') # => true
student.custom_fields.build(field_attributes: field_attrs, value: 'Blue').save # => true
student.get_custom_fields_with_values # => { 'Favorite Color' => 'Blue' }
しかし、私はget_custom_fields_with_values
への呼び出しを行う観点から、返されたすべてのことは空ハッシュです。
私はPostgresデータベースを使用しています。その中のデータを調べると、すべての行があり、すべての外部キーが正しいことがわかります。
これは、ページが要求されたときに行われるクエリです:
CustomField Load (0.3ms) SELECT "custom_fields".* FROM "custom_fields"
WHERE "custom_fields"."custom_fieldable_id" = $1
AND "custom_fields"."custom_fieldable_type" = $2
[["custom_fieldable_id", "34df8e09-148d-5660-bb6c-dd5ca7c9e0ff"],
["custom_fieldable_type", "Student"]]
データベース行:
私は、サーバーを複数回再起動し、そしてまだのみを取得しました空のハッシュまたは空のActiveRecord::CollectionProxy
オブジェクトです。しかし、コンソールを再起動すると、フィールドをうまく取り出すことができ、予想されるハッシュを戻すことができます。また、ページの読み込み時に実行されるクエリを実行すると、予想される動作が返されます。
私はブラウザのキャッシュをクリアし、ブラウザを再起動し、複数のブラウザをすべて同じ効果を試しました。サーバーを複数回再起動し、コンソールを複数回再起動しました。
HAML:
= bootstrap_panel do |panel|
- panel.content = capture do
.panel-heading
%h2 Custom Fields
.panel-body
= @student.get_custom_fields_with_values
機能:
def get_custom_fields_with_values
custom_fields.inject(Hash.new) do |h, cf|
field_name = cf.field_attributes.name
h[field_name] = cf.value; h
end
end
そして、すべてのことは、パネル本体に表示されている:コンソールリターンで
{}
しかし、メソッド呼び出し:
student.get_custom_fields_with_values
=> {"Favorite Car"=>"Prius", "Favorite Color"=>"Blue"}
のconfig/database.ymlを
default: &default
adapter: postgresql
database: <%= Rails.application.secrets.database %>
host: <%= Rails.application.secrets.database_host %>
username: <%= Rails.application.secrets.database_username %>
password: <%= Rails.application.secrets.database_password %>
port: 5432
pool: 10
development:
<<: *default
test:
<<: *default
staging:
<<: *default
production:
<<: *default
は問題は私のデータベースは、マルチテナントとレールが間違ったテナントで見ていたあるだった
を解決しました。除外モデルに追加して公開すると、問題が修正されました。
関連するコードを掲載することはできますか? – Dbz
@Dbzはそれを関連するビューコードで更新し、機能コードを追加しました。 – user2826911
異なる環境でrails consoleと実際のアプリケーションを実行している可能性があります。 'rails console'を実行しているときに見ている環境は何ですか? – imechemi