在Rails 3中,要确保Group has_one user.role = groupleader,可以按照以下步骤操作:
class Group< ActiveRecord::Base
has_one :user, -> { where(role: 'groupleader') }
end
class User< ActiveRecord::Base
belongs_to :group
end
role
的字段,用于存储用户在组中的角色:class AddRoleToUsers< ActiveRecord::Migration
def change
add_column :users, :role, :string
end
end
class User< ActiveRecord::Base
belongs_to :group
validates :role, uniqueness: { scope: :group_id, conditions: -> { where(role: 'groupleader') } }
end
group = Group.find(1)
user = group.build_user(role: 'groupleader')
user.save!
现在,当你在Group模型中调用user
方法时,它将返回该组的groupleader。例如:
group = Group.find(1)
groupleader = group.user
这样,你就可以确保每个Group只有一个与其关联的User,并且该User的角色为'groupleader'。
领取专属 10元无门槛券
手把手带您无忧上云