我写了如下的rake任务,
namespace :db do
desc "load photo"
task :load_photo => :environment do
begin
model=Model.find_or_create_by_photo(:name => open("http://domain.com/jsx.jpg"))
end
puts "complete"
rescue Exception => e
puts e
end
end
end
当我运行rake db时:load_photo收到错误" **undefined method 'find_or_create_by_photo'** for #<Class:0x37079e8>"
请帮我详细说明一下?
提前致谢。
答案 0 :(得分:2)
find_and_create_by方法是动态生成的(作为find_by或create_by方法)。如果调用Model.find_or_create_by_column,Ruby会引发NoMethodError。在救援块内调用该错误。如果发生此错误,Rails将在模型中查找与方法名称匹配的列。如果找到列,则动态创建方法。如果没有找到这样的方法,则会再次引发错误。
检查您是否确实有一个名为photo的列。通常这应该有用。
答案 1 :(得分:1)
如果照片是属性:
Model.find_or_create_by_photo photo_name_string
如果照片是关联:
Model.find_or_create_by_photo_id 7
对于您的回形针案例(名为“photo_file_name”的数据库列):
Model.find_or_create_by_photo_file_name 'lala.png'
答案 2 :(得分:0)
这是我的模型代码,我使用paperclip作为gem,模型属性是photo_file_name,photo_content_type和photo_file_size。
class Model < ActiveRecord::Base
has_attached_file :photo, :styles => { :small => "150x150>", :thumb => "75x75>" }
end