0
私はセクションと呼ばれるモデルを持っています。セクションには多くのセクションを持たせたいので、自己結合は開始する場所のようです。Rails - 自己結合モデルへの適切なアクセスがありません
Iセットアップ、このように私のコード:
モデルファイル
class Section < ApplicationRecord
belongs_to :offer
has_many :offer_items
# Self joins:
has_many :child_sections, class_name: "Section", foreign_key: "parent_id"
belongs_to :parent_section, class_name: "Section", optional: true
end
移行ファイル
class CreateSections < ActiveRecord::Migration[5.0]
def change
create_table :sections do |t|
t.string :name
t.references :offer, foreign_key: true
t.references :parent_section, foreign_key: true
t.timestamps
end
end
end
あなたがいないすべてのとして、私は、オプションとしてbelongs_to :parent_section
を設定見ることができるようにセクションには親が必要です。私は私のセクションモデルのattribute_names
を印刷するとき
それは言う:私はミスをしなかった
ActiveRecord::StatementInvalid: SQLite3::SQLException: no such column: sections.parent_id: SELECT "sections".* FROM "sections" WHERE "sections"."parent_id" = ?
:child_sectionsを取得しようと
=> ["id", "name", "offer_id", "parent_section_id", "created_at", "updated_at"]
は私にエラーを取得しますか?
すべての小さなもの。前回私は手紙 "s"と今回は忘れてしまった...ありがとう! Dzięki! – Ancinek
動作しないことの1つは、保存されない子セクションを作成する場合です。これは、offer_idがnilであるためです)。サブセクションを作成中にoffer_idを設定すると、手動でその問題が解決されます。自動的に実際に行う方法はありますか? – Ancinek
あなたは 'before_create'のような' Section'で何かのコールバックを作ることができます。私は確かではありませんが、あなたはこの方法でオファーからすべてのセクションを得ることができると思います: 'something_offer.sections.joins(:child_sections)'。 –