Следующая модель отлично работает для чтения, обновления и удаления, но не для создания.
class Space < ActiveRecord::Base
has_many :space_prices, :dependent => :destroy
accepts_nested_attributes_for :space_prices, :allow_destroy => true
has_many :space_price_availabilities, through: :space_prices, :order => "day_of_week, begin_time", read_only: true
end
class SpacePrice < ActiveRecord::Base
belongs_to :space
has_many :space_price_availabilities, inverse_of: :space_price, :dependent => :destroy, :order => "day_of_week, begin_time"
accepts_nested_attributes_for :space_price_availabilities, :allow_destroy => true
end
class SpacePriceAvailability < ActiveRecord::Base
belongs_to :space_price
end
Я знаю, что обходной путь заключается в реализации метода Space.space_price_availabilities. Недостаточно просто всегда ссылаться на Space.space_prices.space_price_availabilities b / c. Мне нужен полный список, уплощенный и отсортированный.
Если я закомментирую has_many: through в Space, я смогу отлично создать новые Spaces. Затем, если я раскомментирую has_many: through в Space, я смогу прочитать их и обновить их. Только при создании я получаю следующее исключение.
ActiveRecord::HasManyThroughCantAssociateThroughHasOneOrManyReflection
При проверке журналов генерируется и вызывается правильный SQL-запрос, но затем он обращается к этому исключению и откатывает его обратно.
Есть идеи? Я действительно хотел бы знать, если я пропускаю что-то фундаментальное в ассоциациях рельсов. Это выглядит довольно просто для меня. Модель по сути такая же, как пример в документации API.