从模型内部获取未保存的关联

时间:2015-03-17 14:27:24

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

如何从模型方法中访问未保存的关联?例如:

class Post < ActiveRecord::Base
  has_many :comments

  def comment_dates
    comments.pluck(:created_at).sort
  end
end

在模型方法中调用的comments方法返回刚刚保存的关联。当我从对象调用方法时,例如post.comments它返回已保存和未保存的关联。

如何从模型方法中访问已保存和未保存的关联?我需要这样做一些复杂的验证,包括关联。

1 个答案:

答案 0 :(得分:0)

这样的事情怎么样?

class Post < ActiveRecord::Base
  has_many :comments

  def comment_dates
    comments.pluck(:created_at).sort
  end

  def comments_dates_no_query
    comments.map(&:created_at).sort
  end

  def unsaved_comments
    comments.reject(&:persisted?)
  end

  def saved_comments
    comments.select(&:persisted?)
  end
end

你可以像我们一样

post.saved_comments

post.unsaved_comments

希望有所帮助!