Отсутствует требуемая модель актива attr_accessor с Paperclip - PullRequest
3 голосов
/ 19 марта 2012

Я пытаюсь загрузить более 1 файлового ресурса в фильм.Я продолжаю получать сообщение об ошибке Asset model missing required attr_accessor for 'asset_file_name', и я не уверен, почему, вот мой код:

asset.rb модель

class Asset < ActiveRecord::Base
  belongs_to :movie

  has_attached_file :asset
end

movie.rb модель

class Movie < ActiveRecord::Base
  belongs_to :user

  has_many :assets
  accepts_nested_attributes_for :assets

  validates :title, presence: true

  default_scope order: 'movies.created_at DESC'
end

Я также запустил rails g paperclip movie asset, который сгенерировал следующий файл миграции

class AddAttachmentAssetToMovie < ActiveRecord::Migration
  def self.up
    add_column :movies, :asset_file_name, :string
    add_column :movies, :asset_content_type, :string
    add_column :movies, :asset_file_size, :integer
    add_column :movies, :asset_updated_at, :datetime
  end

  def self.down
    remove_column :movies, :asset_file_name
    remove_column :movies, :asset_content_type
    remove_column :movies, :asset_file_size
    remove_column :movies, :asset_updated_at
  end
end

И вот моя миграция "создания активов", которая возникла при создании модели активов:

class CreateAssets < ActiveRecord::Migration
  def change
    create_table :assets do |t|
    t.string :asset_file_name
    t.integer :asset_file_size
    t.string :asset_content_type
    t.datetime :asset_updated_at
    t.text :asset_description
    t.integer :movie_id

    t.timestamps
  end
end

Кто-нибудь может подсказать, почему я получаю ошибку Asset model missing required attr_accessor for 'asset_file_name'?

1 Ответ

9 голосов
/ 19 марта 2012

Более новые версии Rails (правильно) параноидально относятся к массовому назначению.Добавьте attr_accessible :asset_file_name в модель актива, чтобы объявить, что ваша база данных может принимать внешние параметры ввода по запросу.

Чтобы быть еще безопаснее, раскомментируйте config.active_record.whitelist_attributes = true в application.rb (а затем протестируйте все) так что вы должны думать «да, это нормально, и ничего плохого не произойдет» для любых атрибутов, которые вы позволяете пользователям обновлять.

...