Ruby on Rails如何在本例中访问模​​型内​​部的变量?

时间:2012-07-08 15:10:11

标签: ruby-on-rails scope rails-activerecord

我有一个像这样的模型:

# == Schema Information
#
# Table name: s3_files
#
#  id                       :integer         not null, primary key
#  owner                    :string(255)
#  notes                    :text
#  created_at               :datetime        not null
#  updated_at               :datetime        not null
#  last_accessed_by_user    :string(255)
#  last_accessed_time_stamp :datetime
#  upload_file_name         :string(255)
#  upload_content_type      :string(255)
#  upload_file_size         :integer
#  upload_updated_at        :datetime
#

class S3File < ActiveRecord::Base

  #PaperClip methods
  attr_accessible :upload
  attr_accessor :owner

  Paperclip.interpolates :prefix  do |attachment, style|
    I WOULD LIKE TO ACCESS VARIABLE= owner HERE- HOW TO DO THAT?

  end

  has_attached_file(  :upload,
                  :path => ":prefix/:basename.:extension",
                  :storage => :s3,
                  :s3_credentials => {:access_key_id => "ZXXX",
                                      :secret_access_key => "XXX"},
                  :bucket => "XXX"
                )


  #Used to connect to users through the join table
  has_many :user_resource_relationships
  has_many :users, :through => :user_resource_relationships

 end

我在控制器中设置此变量,如下所示:

    # POST /s3_files
    # POST /s3_files.json
   def create
    @s3_file = S3File.new(params[:s3_file])
    @s3_file.owner = current_user.email

    respond_to do |format|
      if @s3_file.save
        format.html { redirect_to @s3_file, notice: 'S3 file was successfully created.' }
        format.json { render json: @s3_file, status: :created, location: @s3_file }
      else
        format.html { render action: "new" }
        format.json { render json: @s3_file.errors, status: :unprocessable_entity }
      end
    end
  end

谢谢,任何帮助都将不胜感激。

3 个答案:

答案 0 :(得分:1)

只需使用owner或self.owner即可获取变量

答案 1 :(得分:0)

您是否尝试过owner并查看它是否有效?

答案 2 :(得分:0)

此类代码:attr_accessor :owner在类中生成getter和setter方法,有效地为您提供实例方法。

因此,在您的conrtroller中,如果您有一个名为S3File的{​​{1}}实例来阅读所有者,请使用@s3_file并设置它只需val=@s3_file.owner

如果您想在@s3_file.owner="asdf"的实现中读取/写入,请转到S3Fileval=self.ownerself.owner="asdf"是可选的。