Rails 5 belongs_to作用域验证

时间:2017-07-31 22:29:55

标签: validation ruby-on-rails-5.1

让我说我有这个模型:

class Post < ApplicationRecord
  enum post_type: { post: 0, page: 1 }

  belongs_to :user
end

默认情况下,rails 5将使belongs_to :user关联成为必需。如果您通过optional: true将使此关联成为可选。但我想要的是belongs_to :user关联仅在post_typepagepost为必需时才是可选的。

我该如何在第belongs_to :user行?

执行此操作

此刻我正在这样做:

class Post < ApplicationRecord
  enum post_type: { post: 0, page: 1 }

   belongs_to :user, optional: true
   validates :user_id, presence: { scope: post? } 
end

但这会给我一个错误:

  

NoMethodError:未定义的方法`post?&#39;对于#

这是正确的方法吗?或者还有另一种方式?

1 个答案:

答案 0 :(得分:1)

可以使用user选项验证if状态:

validates :user, presence: true, if: :post?