2016-04-11 10 views
0

私はテーブル「ユーザー」を持っていますが、1人のユーザーは別のユーザーのマネージャーかもしれません。また、1人のユーザーは他の多くのユーザーのマネージャーでもあり、1対多の関係であり、 。foreign_keyを追加する方法は同じテーブルを指している?

1.私は 'manager_id'(本当に別のuners idを格納する)カラムをusersテーブルに追加しました。

2.I've Userモデルクラスで定義された関係:私はそのすべての罰金別のユーザーIDに1人のユーザーMANAGER_ID」を設定している場合

belongs_to :manager, foreign_key: 'manager_id',class_name:'User' 
    has_many :minions, class_name:'User' 

は、レールコンソールで言います。しかし、もし私が 'user.manager'や 'user.minions'のようなメソッドを使用しようとすると、それらのメソッドは定義されていません。私は間違っていたのですか?これはちょうど私が上記の説明から理解何のスケッチは、それを向上させることができている

class User < ActiveRecord::Base 
    self.inheritance_column = :child_class 
    has_many :minions, :foreign_key => :parent_id, :as => :parent 
    belongs_to :parent, :polymorphic => true 
end 

+0

正確なエラーメッセージは何ですか? – Pavan

+0

NoMethodError:#<ユーザー:0x00000004c00ec8>のための未定義のメソッド 'minions ' – EasternDude

+0

クラスのインスタンスで行うべきであり、クラス自体ではありません。 'User.find(1).minions'または' User.find(1).manager'を試してください – Pavan

答えて

0

私はあなたのように行うことができ、自己の継承を実装したいと思います。

+0

私は問題は、ユーザー関係の領域のいずれもロードされていないと思う。私はテストダミークラスでも同じことをやったし、動作します! また、これをより明確にするために、私は 'user_id'列を持ち、ユーザに関連するクラスObjectiveを持っています: **** belongs_to:user、foreign_key: 'user_id'、class_name: 'User' ** ** 私はobjective.userを実行すると正しいユーザーを返します。しかし、私もユーザーの関係を定義しているにもかかわらず、**** has_many:objective ****私は 'user1.objectives'のような何かをしようとすると、メソッドが再び定義されていないエラーを返します...なぜこれが起こりますか? – EasternDude

関連する問題