这些是我的模特:
markerOptions!!.icon(BitmapDescriptorFactory.fromResource(R.id.cluster_icon))
我想将群组分配给用户。有几种类型的组,用户只能从每种类型中选择一个组。在视图中,每个组类型都应该有一个选择标记(用户不必是每个组类型的成员)。
我可以将一个type_id列添加到成员资格模型中,并为每个新用户为每个组创建一个实例,然后更新行,类似于(对于类型1):
class User < ActiveRecord::Base
has_many :memberships
has_many :groups, through: :memberships
end
class Group < ActiveRecord::Base
has_many : memberships
has_many :users, through: :memberships
belongs_to :group_type
end
class Membership < ActiveRecord::Base
belongs_to :user
belongs_to :group
end
class GroupType < ActiveRecord::Base
has_many :groups
end
(不确定它是否有效)
无论如何我确定有更好的方法..如何为每种类型限制将模型与一组连接? (当然,有一种编辑现有会员资格的方式)。
我会赞美任何帮助......
谢谢!
答案 0 :(得分:1)
您的模型结构看起来很好。您还可以在成员资格中包含group_type,然后根据唯一性进行验证。
class Membership < ActiveRecord::Base
belongs_to :user
belongs_to :group
belongs_to :group_type
validates :user_id, uniqueness: { scope: [:group_id, :group_type_id],
message: "can only join one group of this type." }
end
表单应该创建成员资格。
<%= form_for (Membership.new) do |f|
<%= f.hidden_field :user_id, value: @user.id %>
<%# your selection for a group %>
<% end %>
在控制器中,您必须从DB加载组,而不是将group_type_id添加到params和.save - &gt;验证将处理其余部分。