Я хочу сохранить разные результаты (по умолчанию и вручную), каждый результат может иметь причину. Подумал, что это будет хорошим местом для полиморфной ассоциации. Тем не менее, модели занимают место в именах, и это может оказаться более сложным, чем предполагалось. Следующий the guideRails Полиморфные ассоциации с пространством имен
приложения/модель/событие/reason.rb
# id :integer not null, primary key
# reasons :string
# reasonable_id :integer
# reasonable_type :string
# created_at :datetime not null
# updated_at :datetime not null
#
class Event::Reason < ActiveRecord::Base
belongs_to :reasonable, polymorphic: true
end
приложения/модель/событие/result.rb
class Event::Result < ActiveRecord::Base
belongs_to :event
has_one :event_reason, as: :reasonable
end
приложение/модель/событие/manual_result .rb
class Event::ManualResult < ActiveRecord::Base
belongs_to :event
has_one :event_reason, as: :reasonable
end
Но если я пытаюсь сделать что-то вроде:
Event::ManualResult.last.event_reason
Event::ManualResult Load (5.1ms) SELECT "event_manual_results".* FROM "event_manual_results" ORDER BY "event_manual_results"."id" DESC LIMIT 1
NameError: uninitialized constant Event::ManualResult::EventReason
или
Event::Result.last.event_reason
Event::Result Load (0.4ms) SELECT "event_results".* FROM "event_results" ORDER BY "event_results"."id" DESC LIMIT 1
NameError: uninitialized constant Event::Result::EventReason
Казалось бы, он ожидает ассоциации быть вложено в пределах вывода дополнительного слоя Event::ManualResult::EventReason
и Event::Result::EventReason
Спасибо, бутон! человек, я буквально делал то же самое! улей пять. Какая тварь ума – TheLegend