我有一个叫做Treating的模型,它需要同时存在'requestor'和'requestee'。这些属性在处理模型中都不可访问。这里的模型:在数据库rake中设置不可访问的属性:填充
class Treating < ActiveRecord::Base
attr_accessible :intro, :proposed_date, :proposed_location
validates :intro, presence: true, length: { maximum: 190 }
validates :requestor_id, presence: true
validates :requestee_id, presence: true
belongs_to :requestor, class_name: "User"
belongs_to :requestee, class_name: "User"
default_scope order: 'treatings.created_at DESC'
end
我试图填充这个耙档测试数据库,sample_data.rake:
namespace :db do
desc "Fill database with sample data"
task populate: :environment do
...
requestors = User.all(limit: 6)
50.times do
intro = Faker::Lorem.sentence(5)
requestors.each do |requestor|
requestee = User.find(rand(1..6))
requestor.sent_treatings.create!(intro: intro)
end
end
end
end
除非我做:请求在处理模型的可访问属性,并按照“ intro:intro'with'requestee:requestee'in'requestor.sent_treatings.create!(intro:intro)'line of my rake file,当我运行rake db时,我会得到一个Validation错误:填充说'requestee是空白':
rake aborted!
Validation failed: Requestee can't be blank
Tasks: TOP => db:populate
1)[more imporant]如何在我的rake文件中设置'requestee',而无需在模型中访问'requestee'? 2)我在'50.times.do'循环中声明了'requestee'变量:'requestee = User.find(rand(1..6))'。什么是更好的方式来声明这与我如何在'requestors.each do | requestor |'中声明'requestor'变量相似?
非常感谢!
那有用,谢谢! – keypulsations 2012-08-03 15:04:47