用于1个数据库记录的Rails多态模型

时间:2015-08-30 21:47:33

标签: ruby-on-rails ruby-on-rails-4 database-design architecture polymorphism

我正在为一个慈善机构开发一个rails应用程序,该机构为家庭筹款人以及慈善机构本身提供众筹资助。现在捐款被设置为属于家庭&使用多态性的筹款人,但我不确定如何为慈善机构筹款。

我应该为慈善机构捐款吗?这对我来说感觉就像糟糕的架构,因为它将是一个单一的数据库记录。

为慈善机构捐款的最佳方式是什么?

这是我的捐款模式:

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

谢谢!

1 个答案:

答案 0 :(得分: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

我希望这有所帮助。

快乐黑客