我的应用空间中有以下两个模型,就像项目&权限
class Space < ActiveRecord::Base
has_many :permissions
has_many :users, :through => :permissions
class Permission < ActiveRecord::Base
belongs_to :user
belongs_to :space
belongs_to :role
validates_presence_of :space_id , :user_id, :role_id
所以这就是我想要做的事情,在空间控制器中,当用户进行DEF CREATE时,我想创建一个空格,并使用role_id = 1的权限,以确保空间/项目作为创建者会员......
这就是我所拥有的。它变得混乱而没有创建权限
太空控制器:
def create
@space = current_user.spaces.new(params[:space].merge(:creator => current_user.id))
@space.permissions.new(:role_id => 1, :user_id => current_user.id)
respond_to do |format|
if @space.save
..
..
感谢您的帮助
答案 0 :(得分:2)
回调是rails如何处理在其中一个CRUD操作之后应用于模型或其关联的业务逻辑。
例如,。如果您想创建一个具有1个权限的空间,并且该权限有一个角色,您可以执行以下操作。
在您的用户模型中
def before_create
User.permissions << Permision.create({:role_id => 1})
end
查看rails API中的回电。它们将从控制器中获取大量逻辑,并使其更容易在模型中维护。