Ruby on rails 为什么';t在RoR 3中的自定义验证工作
以下是我的Photo model类代码:Ruby on rails 为什么';t在RoR 3中的自定义验证工作,ruby-on-rails,ruby-on-rails-3,validation,activerecord,Ruby On Rails,Ruby On Rails 3,Validation,Activerecord,以下是我的Photo model类代码: class Photo < ActiveRecord::Base belongs_to :user belongs_to :organization validate :user_id_or_organization_id_cant_be_blank ... def user_id_or_organization_id_cant_be_blank if !:user_id? and !:organization_
class Photo < ActiveRecord::Base
belongs_to :user
belongs_to :organization
validate :user_id_or_organization_id_cant_be_blank
...
def user_id_or_organization_id_cant_be_blank
if !:user_id? and !:organization_id?
errors.add(:user_id, "no user")
errors.add(:organisation_id, "no organization")
end
end
class-Photo
问题在于验证。它不起作用,我不明白为什么
我可以创建一张没有用户id或组织id的照片,这是不应该发生的
请向我解释我做错了什么?你宁愿做:
def user_id_or_organization_id_cant_be_blank
if user_id.blank? && organization_id.blank?
errors.add(:user_id, "no user")
errors.add(:organisation_id, "no organization")
end
end
Rails提供了检查存在性的标准方法:
validates :user_id, :organization_id, presence: true
如果需要执行复杂的验证,请尝试使用ActiveModel::Validator
class Photo < ActiveRecord::Base
validates_with UserOrganizationIdsValidator
end
class UserOrganizationIdsValidator < ActiveModel::Validator
def validate(record)
if user_id.blank? && organisation_id.blank?
errors.add(:user_id, "no user")
errors.add(:organisation_id, "no organization")
end
# something custom else...
end
end
class-Photo
是的,我应该使用user\u id而不是:user\u id。。谢谢!