mass_assignment_authorizer и вложенные атрибуты

Я использую динамический attr_accessible согласно этой статье:

http://asciicasts.com/episodes / 237-dynamic-attr-available

Работает нормально. Но я не нашел элегантного способа заставить его работать с вложенными атрибутами. Вот упрощенный код:

class Company < ActiveRecord::Base
  has_many :employees

  accepts_nested_attributes_for :employees
end

class Employee < ActiveRecord::Base
  belongs_to :company

  attr_protected :salary

  attr_accessor :accessible

  def mass_assignment_authorizer  
    if accessible == :all
      ActiveModel::MassAssignmentSecurity::BlackList.new
    else
      super + (accessible || [])
    end
  end 
end

Допустим, у меня есть интерфейс администратора с формой RESTful для компании. В этой форме У меня есть поля для employee_attributes , включая пустые поля для создания новых сотрудников. Я не могу найти способ позвонить Employee # available = в этом контексте. Просматривая исходный код ActiveRecord, кажется, что это невозможно: в самой удаленной части очень глубокого стека вызовов вложенные ассоциации просто приводят к вызову Employee.new с атрибутами.

I Подумал о создании специального атрибута, который можно было бы передать через массовое назначение. Если бы значение атрибута было правильным кодом, экземпляр Employee установил бы @accessible на : all . Но я не думаю, что есть способ гарантировать, что этот атрибут будет установлен перед защищенными атрибутами. t.onload = ... t.src = 'http: // myurl'; Но время от времени хотелось бы отменить ...

Я загружаю (большие) изображения динамически для рисования на холсте html5, примерно так:

var t = new Image();
t.onload = ...
t.src = 'http://myurl';

Но время от времени мне хотелось бы полностью отменить запрос изображения .

Единственный способ, который я придумал, - это установить src на '' . т.е.

t.src = ''

Это работает во многих браузерах, но кажется, что только Firefox фактически отменяет HTTP-запрос изображения.

Я тестировал это с помощью Fiddler2 , отключив кеширование и включив «эмуляцию скорости модема». Затем запускаем скрипт для проверки отмены запроса изображения. (Мне бы хотелось услышать другие идеи о том, как это проверить)

Я знаю, что есть способы отменить все запросы ( как в этом вопросе ), но я ' хочу отменить только один.

Есть идеи, как это сделать (особенно в мобильных браузерах)?

21
задан Community 23 May 2017 в 11:52
поделиться