我目前有三个模型:支持Devise auth gem的两个不同用户模型:社区组织者和常规用户,以及一个社区活动模型。
我试图让社区组织者创建活动:
我使用stripe作为支付网关。到目前为止,我已为Event
模型设置了控制器/模型支架:
class Event < ActiveRecord::Base
extend FriendlyId
friendly_id :title, use: :slugged
belongs_to :org_user #organization_user
has_one :category
end
以下是我的组织用户模型:
class OrgUser < ActiveRecord::Base
extend FriendlyId
friendly_id :username, use: :slugged
has_many :posts
has_many :comments
has_many :events
end
我被告知我可能需要在我的事件和org_user模型中使用这些特定模式
class Event < ActiveRecord::Base
event has_many :attendances
event has_many :users, through: :attendances
end
class OrgUser < ActiveRecord::Base
org_user has_many :attendances
org_user has_many :events, through: :attendances
end
class User < ActiveRecord::Base
end
您对建立这种关系有何建议?我也不想忘记User.rb,它会将表单签名为:org_user发布的事件的一部分。
只有org_user才能创建/发布事件。普通用户可以访问注册表单以参加这些事件。请帮我澄清这个障碍。
答案 0 :(得分:2)
有几件事:
你可以模仿这样的事情:
class Event < ActiveRecord::Base
has_many :attendances
has_many :users, through: :attendances
end
class OrgUser < ActiveRecord::Base
has_many :events # as coordinations
end
class User < ActiveRecord::Base
has_many :donations
has_many :attendances
end
class Attendance < ActiveRecord::Base
belongs_to :user
has_one :event
end
class Donation < ActiveRecord::Base
belongs_to :user
has_one :event
end