Я использую Ruby on Rails 3.1.0 и хотел бы запустить метод :reject_if
( как , описанный в официальной документации , связанной с методом accepts_nested_attributes_for
враздел «Один ко многим» для экземпляров объектов класса « вообще » (то есть для запуска метода :reject_if
, а не для атрибутов - как сделано всвязанная документация - но с записями, которые должны «впоследствии» храниться в базе данных).В двух словах, я хотел бы отклонить \ отфильтровать некоторые вложенные экземпляры объектов модели \ класса, которые должны храниться в базе данных, запустив пользовательский метод для этих экземпляров.
Например, если у меня есть следующее:
class User < ActiveRecord::Base
has_one :article,
accepts_nested_attributes_for :article
end
Я хотел бы сделать что-то вроде этого (следующий код не работает):
class User < ActiveRecord::Base
has_one :article,
# Note: by using 'article' in the block I (would like to) refer to class
# object instances
accepts_nested_attributes_for :article, :reject_if => { |article| article.can_be_created? }
end
class Article < ActiveRecord::Base
def can_be_created?
true if user.has_authorization?
end
end
Возможно ли это?Если да, то как я могу это сделать?