Ruby on rails rails模型回调

Ruby on rails rails模型回调,ruby-on-rails,ruby-on-rails-3,model,callback,Ruby On Rails,Ruby On Rails 3,Model,Callback,我如何在模型内部执行某些操作,这取决于它是否正在创建或更新记录?我相信这很简单,但我似乎不明白 这些是使用回形针更新或创建附件的不同样式 class Photo < ActiveRecord::Base belongs_to :product #after_upate :flag_somthin Paperclip.interpolates :product_id do |attachment, style| attachment.instance.produc

我如何在模型内部执行某些操作,这取决于它是否正在创建或更新记录?我相信这很简单,但我似乎不明白

这些是使用回形针更新或创建附件的不同样式

class Photo < ActiveRecord::Base

  belongs_to :product

  #after_upate :flag_somthin

  Paperclip.interpolates :product_id  do |attachment, style|
    attachment.instance.product_id
  end

  has_attached_file :data,
    :storage => 's3',
    :s3_credentials => "#{RAILS_ROOT}/config/s3_credentials.yml",
    :bucket => 'leatherarts.com',
    :s3_host_alias => 'leatherarts.com.s3.amazonaws.com',
    :url => ':s3_alias_url',
    :path => "images/products/:product_id/:style/:basename.:extension",
    :styles => lambda { |style| style.instance.choose_styles },
    :default_style => :medium,
    :default_url => 'http://leatherarts.com.s3.amazonaws.com/images/records/m1.png',
    :s3_headers => { 'Expires' => 2.months.from_now.httpdate }

    validates_attachment_presence :data
    validates_attachment_size :data, :less_than => 10.megabytes
    validates_attachment_content_type :data, :content_type => ['image/jpeg','image/gif','image/png']

    def choose_styles
      { :thumb => "60x60#", :small => "200x200>", :medium => "400x400>", :large => "1000x1000>", :backup => "2000x2000>" }, :on => :create
      { :thumb => "60x60#", :small => "200x200>", :medium => "400x400>", :large => "1000x1000>" }, :on => :update
    end

end
class-Photo's3',
:s3_credentials=>“#{RAILS_ROOT}/config/s3_credentials.yml”,
:bucket=>'leatherart.com',
:s3_host_alias=>'leatherart.com.s3.amazonaws.com',
:url=>':s3\u别名\u url',
:path=>“image/products/:product_id/:style/:basename.:extension”,
:styles=>lambda{| style | style.instance.choose_styles},
:default_style=>:中等,
:default_url=>'http://leatherarts.com.s3.amazonaws.com/images/records/m1.png',
:s3_headers=>{'Expires'=>2.months.from_now.httpdate}
验证附件是否存在:数据
验证附件大小:数据,:小于=>10.MB
验证附件内容类型:数据、内容类型=>['image/jpeg'、'image/gif'、'image/png']
def选择_样式
{:thumb=>“60x60”;:small=>“200x200>”,:medium=>“400x400>”,:large=>“1000x1000>”,:backup=>“2000x2000>”,:on=>:create
{:thumb=>“60x60”;:small=>“200x200>”,:medium=>“400x400>”,:large=>“1000x1000>”,:on=>:update
结束
结束

使用
新建\u记录?
方法返回不同的散列:

def choose_styles
  defaults = { :thumb => "60x60#", :small => "200x200>", :medium => "400x400>", :large => "1000x1000>" }
  defaults.merge! :backup => "2000x2000>" if new_record?
  defaults
end

使用
new\u record?
方法返回不同的散列:

def choose_styles
  defaults = { :thumb => "60x60#", :small => "200x200>", :medium => "400x400>", :large => "1000x1000>" }
  defaults.merge! :backup => "2000x2000>" if new_record?
  defaults
end

是的,这是我通常会做的,但我不确定如何在这种情况下完成它,我更新了我的问题的更多细节。你为什么希望通过多次更新来保存原始照片?这听起来像是应该存储在不同的记录中。是的,这是我通常会做的,但我不确定如何完成。在这个例子中,我用更多的细节更新了我的问题。为什么要通过多次更新来保存原始照片?听起来它应该存储在不同的记录中。