显示关于Ruby on Rails的has_many_through数据

时间:2015-12-24 13:00:34

标签: ruby-on-rails ruby ruby-on-rails-4 activerecord

我试图为我的系统创建一个访问控制。我有以下情况:

角色可以为许多工作场所提供许多访问规则。

该模型目前正在使用导轨导轨结构:

class Workspace < ActiveRecord::Base
    has_many :accessrules
    has_many :roles, through: :accessrules 
end

class Role < ActiveRecord::Base
    has_many :accessrules
    has_many :workspaces, through: :accessrules
end

class AccessRule < ActiveRecord::Base
    belongs_to :role 
    belongs_to :workspace
end

我试图为AccessRoles View创建索引,我不知道该怎么做,我收到的错误是AccessRole没有初始化,应该在accessrole.db中定义

有人可以帮我了解如何在Accessroles @ index中显示联合数据表(All Roles_id + Workspaces_id)吗?

1 个答案:

答案 0 :(得分:0)

您可以在迁移中使用:

create_table :role_workspaces, force: true, id: false do |t|
  t.belongs_to :role, index: true
  t.belongs_to :workspace, index: true
end

之后您可以使用(例如):

@role.workspaces
@workspace.roles

  # PUT /workspaces/1 
  def update
    @workspace = Workspace.find params[:id]
    @roles = Role.find params[:workspace][:roles]
    @workspace.roles = @roles

    respond_to do |format|
      if @workspace.update_attributes(params[:workspace])
      ...