如何在rails迁移中将has_many关联添加到两个不同的模型?

时间:2017-10-17 12:43:57

标签: ruby-on-rails ruby-on-rails-4 activerecord rails-activerecord rails-migrations

我怎样才能做到这一点?

class User < ActiveRecord::Base     
  has_many :old_posts
  has_many :new_posts
end

我已经与old_posts模型有has_many关系。我想为new_posts添加另一个has_many关系。 old_posts和new_posts无关。我正在重构我的架构,我想支持&#39; old_posts&#39;在我完全摆脱它之前几个月的模型。

我尝试迁移时在架构中出现此错误

#Could not dump table "Users" because of 
following NoMethodError
#undefined method `[]' for nil:NilClass

1 个答案:

答案 0 :(得分:1)

  • 您应指定条件,因为两者都指的是同一模型。

  • 提及明确引用的模型,因为默认情况下由于自定义关联名称而无法识别模型。

更新如下代码

class User < ActiveRecord::Base
    has_many :old_posts, ->{where("created_at > ?", Time.now.end_of_day)}, class_name: 'Post', foreign_key: 'user_id'
    has_many :new_posts, ->{where("created_at < ?", Time.now.end_of_day)}, class_name: 'Post',foreign_key: 'user_id'
end