加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails-3 – 如何定义与工厂女孩的多态关联

发布时间:2020-12-17 03:14:43 所属栏目:百科 来源:网络整理
导读:我有一个用户和故事模型,他们都有评论. 我宣布以下模型如下: class Comment belongs_to :commentable,polymorphic: true belongs_to :userendclass Userendclass Storyend 现在,我想声明一个具有FactoryGirl的注释对象,该对象属于与值得称赞的用户和用户相
我有一个用户和故事模型,他们都有评论.

我宣布以下模型如下:

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

解决方法

首先,我认为你没有完成你的协会……我认为这就是你想要的:

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

不要忘记数据库设置.

其次,Factory Setup会返回两个用户,因为您正在告诉它.尝试:

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

作为一种风格问题,模型名称的选择在这里有点令人困惑.用户如何“可评论”?如果你的意思是其他类型的写作,我会选择一个不同的名字.同上,如果你的意思是“用户个人资料”或类似的东西.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读