なぜActiveAdminが壊れているのか理解しようとすると、あなたの助けに感謝します。ActiveAdmin has_many through - 未定義メソッド `klass 'for nil:NilClass
EDIT:私は自分自身をこれで少しの状況でx-y problemにしました。私はSOコミュニティにお詫び申し上げます...
私はhas_many :venue_rps
の関係が犯人であると仮定しましたが、後に別の問題であることが判明しました。
マイモデル::この問題の更新されたバージョンについては、以下をご覧ください
class Venue < ActiveRecord::Base
belongs_to :nightclub
has_one :nightclub_boss, through: :nightclub
belongs_to :rp_boss
has_many :memberships
has_many :rps, through: :memberships
belongs_to :captain
has_many :reservations
has_many :payments, through: :reservations
has_many :cutoffs
has_many :cutoff_payments, through: :cutoff
has_many :favorites
has_many :schedules
end
class Membership < ActiveRecord::Base
belongs_to :venue, dependent: :destroy
belongs_to :rp, dependent: :destroy
end
class Rp < User
has_many :memberships
has_many :venues, through: :memberships
has_many :nightclubs, through: :venues
has_many :nightclub_bosses, through: :nightclubs
has_many :rp_bosses, through: :venues
has_many :captains, through: :venues
has_many :reservations
has_many :payments, through: :reservations
end
編集:そう、私は次のようにして、これを固定し、私の前の説明は以下をお読み:
を私は
venue_rp
から結合テーブルモデルをmembership
に変更しました。これは私の移行です:class CreateMemberships < ActiveRecord::Migration def change create_join_table :rps, :venues, table_name: :memberships do |t| t.index [:rp_id, :venue_id] t.index [:venue_id, :rp_id] end end end
それが動作しませんでしたので、私は周りの突きと間違っていたものを見つけるために、デバッガを実行しました。
私が持っていた:それは複数作るために必要な
has_many :cutoffs
has_many :cutoff_payments, through: :cutoff
:私は、私は会場でのカットオフとの関係をしくじったことがわかっ
has_many :cutoffs
has_many :cutoff_payments, through: :cutoff*s*
例外は消えていた後ということ。次のようなactiveadminに別の問題が発生した場合には
:
undefined method `memberships_id_eq' for Ransack::Search<class: Venue, base: Grouping <combinator: and>>:Ransack::Search
だけmembership
has_many through:
モデルに掻き回すフィルタを削除します。このユースケースでは、私の情報をそれによってフィルタリングする必要はないので、ただ削除しました。
[OLD]説明:あるVenueに多くのRpsを割り当て、特定のRpに多くの会場を割り当てる必要があるため、この情報をモデル化するためにjoinテーブルを使用する結合モデル(venue_rp
)を使用しました。
これまでのところよくできていて、レールコンソールの魅力のように機能します。
しかし、私はActiveAdminの方法を行ったので、私は管理者のユーザーにCRUDデータのフォームを提供する必要があります。だから私は先に行くと、私の会場モデルを登録します。
ActiveAdmin.register Venue do
scope_to :current_user, if: proc{ current_user.is_nightclubboss? }
menu priority: 3
end
superadminsは、アプリ内のすべての情報を見ることができるようになり、そしてナイトクラブのボスはそれらのみに関係する情報を見ることができますということでアイデア。
これまでのところは良い、私は(Sucursalesは、以下のスクリーンショットで会場を意味する)、私は会場でactiveadminのデフォルトのインデックスとフォームが表示されますことを期待してい:
しかし、私はクリックしてくださいactiveadminメニューの会場入口で私は反射の問題に遭遇:私が試した何
は団体、これまでに無いサイコロを書き換えることです。私は彼らに何か間違っているのですか?
これを読んでいる間に最初の問題が発生しました。あなたのjoinテーブルはvenue_rpではなくrps_venuesである必要があります。 Railsはテーブル名を複数形にして、字句順に並べ替えることを期待しています! – bkunzi01
私は先に進み、その関連を元に戻しましたが、私はまだ同じ問題に遭遇しました。結局のところ、それは異なるモデルの問題でした。もっと説明するために質問を改善します。 –
質問が更新されました。投稿が私に可能になったら解決策を投稿します。ありがとう@ bkunzi01 –