0

Я работаю на приложение рельсы для благотворительности, который принимает толпы финансируемых пожертвований для семей , Фандрайзер, и для благотворительности сами. Прямо сейчас пожертвования настроены на принадлежность к семьям & Фандрайзеры, использующие полиморфизм, но я не уверен, как взять деньги на благотворительность.Rails Полиморфной модель 1 Database Record

Должен ли я сделать модель для пожертвований на благотворительность? Для меня это похоже на плохую архитектуру, потому что это будет одна запись базы данных.

Каков наилучший способ получения пожертвований на благотворительность?

Вот мое пожертвование модель:

#app/models/donation.rb 
class Donation < ActiveRecord::Base 
    has_secure_token 
    belongs_to :family, via: :recipient 
    belongs_to :fundraiser, via: :recipient 

Спасибо!

ответ

1

в вашей миграции вы должны сделать что-то вроде

class Donations < ActiveRecord::Migration 
    def change 
    create_table :donations do |t| 
     ... 
     t.integer :something_id # this is the record id of something 
     t.string :something_type # this is the model name like family or fundraiser 

     t.timestamps 
    end 
    end 
end 

Сейчас в вашей модели

class Donation < ActiveRecord::Base 
    belongs_to :something, polymorphic: true 
end 

# repeat this in all the models that can use this polymorphic association 
class Family < ActiveRecord::Base 
    has_many :donations, as: :something 
end 

Я надеюсь, что это помогло.

Happy Hacking

+0

Да, я знаю это. Я уже это сделал. Но теперь мне нужно иметь контроллеры, принадлежащие благотворительной организации. Я спрашиваю, как настроить Пожертвования на благотворительность. Должна ли быть модель, которая имеет только 1 запись (Charity)? Мне это кажется плохо. – Carterdea

+0

Я думаю, что вы ищете, это 'Donations.last.something', это возвращает семью или сбор средств – MZaragoza

+0

Нет, я пытаюсь решить, следует ли мне создавать благотворительную модель или если есть лучший способ собрать пожертвования, которые делают НЕ отправляйтесь в семью или сбор средств, но прямо на благотворительность. – Carterdea