Rails构建具有父级的对象?

时间:2010-11-02 04:42:19

标签: ruby-on-rails ruby-on-rails-3

我的应用空间中有以下两个模型,就像项目&权限

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
    ..
    ..

感谢您的帮助

1 个答案:

答案 0 :(得分:2)

回调是rails如何处理在其中一个CRUD操作之后应用于模型或其关联的业务逻辑。

例如,

。如果您想创建一个具有1个权限的空间,并且该权限有一个角色,您可以执行以下操作。

在您的用户模型中

def before_create
   User.permissions << Permision.create({:role_id => 1})
end 

查看rails API中的回电。它们将从控制器中获取大量逻辑,并使其更容易在模型中维护。