11

両方にコメントがあるユーザー モデルとストーリー モデルがあります。

次のモデルを次のように宣言しました。

class Comment
  belongs_to :commentable, polymorphic: true
  belongs_to :user
end

class User
end

class Story
end

ここで、コメンダブルおよびユーザーと同じユーザーに属する FactoryGirl を使用して、コメント オブジェクトを宣言したいと考えています。

これまでの私のコードは次のとおりです。

FactoryGirl.define do
  factory :user do
    sequence(:email) {|n| "person#{n}@exmaple.com"}
    sequence(:slug) {|n| "person#{n}"}
  end

  factory :comment do    
    occured_at { 5.hours.ago }
    user
    association :commentable, factory: :user
  end

end

ここでの問題は、コメントを書いているユーザーと称賛すべきユーザーが同じではないということです。

なぜ私はそれを修正する必要がありますか?

多くのTNX

4

2 に答える 2

10

まず第一に、あなたはあなたの協会の設立が完全に終わっているとは思いません...私はこれがあなたが望むものだと思います:

class Comment < AR
  belongs_to :commentable, polymorphic: true
end

class User < AR
  has_many :comments, as: :commentable
end

class Story < AR
  has_many :comments, as: :commentable
end

参照: http: //guides.rubyonrails.org/association_basics.html#polymorphic-associations

DBの設定を忘れないでください。

次に、ファクトリセットアップは、指示しているため、2人のユーザーを返します。試す:

FactoryGirl.define do
  factory :user do
    sequence(:email) {|n| "person#{n}@exmaple.com"}
    sequence(:slug) {|n| "person#{n}"}
  end

  factory :comment do    
    occured_at { 5.hours.ago }
    association :commentable, factory: :user
  end

end

スタイルの問題として、モデル名の選択はここでは少し混乱します。ユーザーはどのように「コメント可能」ですか?他の種類の文章を意味する場合は、別の名前を選択します。「ユーザープロファイル」またはそれらの線に沿った何かを意味する場合も同様です。

于 2012-08-07T16:34:55.073 に答える