Rails 5 belongs_to 范围验证
Rails 5 belongs_to scoped validation
假设我有这个模型:
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_type
为 page
且 post
为必需时才可选。
如何在 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: undefined method `post?' for #
这是正确的做法吗?或者还有其他方法?
可以使用 if
选项验证 user
存在:
validates :user, presence: true, if: :post?
假设我有这个模型:
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_type
为 page
且 post
为必需时才可选。
如何在 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: undefined method `post?' for #
这是正确的做法吗?或者还有其他方法?
可以使用 if
选项验证 user
存在:
validates :user, presence: true, if: :post?