我在rails 4.2.6工作,我有两个模型 - 一个"项目",一个"捐赠者"。我有csv上传两个都很好。 "项目"包含一个名为" donor"的字段,当我上传项目csv时,我想验证"捐赠者"该csv中的值存在于"捐赠者"我和捐赠者的领域"模型。 (对不起,让模型和专栏命名非常相似有点令人困惑)无论如何,我在project.rb这里,显然它是错的,我只是不确定如何将验证连接到另一个模型。
class Project < ActiveRecord::Base
validates :donor, presence: true
def self.import(file)
CSV.foreach(file.path, headers: true) do |row|
Project.create! row.to_hash
end
end
end
更新: 我现在在这里,觉得我越来越近了,但还没到那里......
class Project < ActiveRecord::Base
validate :validate_donor
def validate_donor
if Donors.find_by_donor(donor) == nil
errors.add(:base, "Donor false")
end
def self.import(file)
CSV.foreach(file.path, headers: true) do |row|
Project.create! row.to_hash
end
end
end
答案 0 :(得分:1)
一些事情:
validate_donor
中的end
。errors.add(etc) unless Donors.find_by_donor
最后,我只在控制器中完成此操作,但常见的辅助方法(例如对于current_user)可能如下所示:
def validate_donor
@donor = Donors.find_by_donor(donor)
errors.add(etc) unless @donor
end
这个方法会给你一个@donor属性来保存,或者给你的对象添加一个错误(我想 - 我有点生疏)。