2

ユーザーが作成した signup_conversions の数を追跡しようとしています。
したがって、次の2つのモデルがあります。

signup_conversion.rb

class SignupConversion < ActiveRecord::Base
  belongs_to :user
  belongs_to :convertee, :class_name => "User", :foreign_key => 'convertee_id'
  attr_accessible :convertee_id
end

user.rb

class User < ActiveRecord::Base
  attr_accessible :name, :email, :password, :password_confirmation
  belongs_to :signup_conversion
  has_many :signup_conversions
end

これはそのように機能しますか?それとも、ここで重要な何かが欠けていますか?

4

2 に答える 2

3

私はコードを試していませんが、役立つと思われるヒントをいくつか紹介します。

  • has_manyすべての/has_oneステートメントに対応するものが必要だと思うbelongs_toので、3belongs_toつと1つhas_manyは見栄えがよくありません。

  • よくわからないのでhas_one :signup_conversionhas_many :signup_conversions一緒にプレイしたいので、名前を変えたいと思います。他の名前も変更して、関連付けを明確にするようにしましたが、それらが表す実際の概念を完全に理解しているかどうかはわかりません。あなたはおそらくより良い名前を思い付くでしょう。

  • デフォルトでは、外部キーは_idアソシエーション名にサフィックスを追加して推測されるため、この場合は指定する必要はありません。また、少なくとも関連付けが機能するためには、その属性にアクセスできるようにする必要はないと思います。

    signup_conversion.rb

    class SignupConversion < ActiveRecord::Base
      belongs_to :owner    , :class_name => "User"
      belongs_to :convertee, :class_name => "User"
    end
    

    user.rb

    class User < ActiveRecord::Base
      attr_accessible :name, :email, :password, :password_confirmation
      has_one  :owned_signup_conversion     , :class_name => "SignupConversion"
      has_many :triggered_signup_conversions, :class_name => "SignupConversion"
    end
    
于 2013-02-14T02:07:42.813 に答える
0

ここには必要以上のコードがあります。あなただけが必要です

class SignupConversion < ActiveRecord::Base
   belongs_to :user
end

class User < ActiveRecord::Base
   attr_accessible :name, :email, :password, :password_confirmation
   has_many :signup_conversions
end

次に、signup_conversions テーブルに user_id 列が必要です。

@user.signup_conversions

ビューまたはコントローラーで。

于 2013-02-13T00:12:03.133 に答える