Согласно документации RABL в разделе "Дочерние узлы" возможно следующее:
object @user
child :posts do |user|
attribute :title unless user.suspended?
end
Это означает, что переменная user
, выдаваемая блоком, является родительским объектом @user
.
Однако, когда я пытаюсь сделать следующее:
collection @listings
child :address do |listing|
attribute :number_and_street unless listing.address_hidden?
end
Я получаю NoMethodError
:
undefined method `address_hidden?' for #<Address:0x007fb83d6eaf80>
это означает, что блок выдает дочерний объект адреса вместо родительского объекта @listing
, как подразумевается в документации.
Единственный способ обойти это, который я вижу, это что-то вроде address.listing.address_hidden?
, что приведет к слишком большому количеству запросов к базе данных, поэтому я бы хотел этого избежать.
Я делаю что-то неправильно? Есть ли способ исправить это поведение?