2016-05-13 11 views
0

なぜ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 

だけmembershiphas_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のデフォルトのインデックスとフォームが表示されますことを期待してい:

enter image description here

しかし、私はクリックしてくださいactiveadminメニューの会場入口で私は反射の問題に遭遇:私が試した何

​​

は団体、これまでに無いサイコロを書き換えることです。私は彼らに何か間違っているのですか?

+1

これを読んでいる間に最初の問題が発生しました。あなたのjoinテーブルはvenue_rpではなくrps_venuesである必要があります。 Railsはテーブル名を複数形にして、字句順に並べ替えることを期待しています! – bkunzi01

+1

私は先に進み、その関連を元に戻しましたが、私はまだ同じ問題に遭遇しました。結局のところ、それは異なるモデルの問題でした。もっと説明するために質問を改善します。 –

+0

質問が更新されました。投稿が私に可能になったら解決策を投稿します。ありがとう@ bkunzi01 –

答えて

0

私はxy問題のような状況に遭遇しました。

問題は問題とは無関係でした。

関連する問題