我正在解决一个我无法解决的问题。
我有以下内容:
群组表:
create_table "groups", :force => true do |t|
t.string "name"
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
end
分组表:
create_table "groupships", :force => true do |t|
t.integer "group_id"
t.integer "user_id"
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
t.boolean "owner"
t.text "permission"
end
group.rb:
class Group < ActiveRecord::Base
belongs_to :user
has_many :groupships
has_many :groups, through: :groupships
end
groupship.rb:
class Groupship < ActiveRecord::Base
belongs_to :user
belongs_to :group
end
我想通过群发查看用户是否是群组的所有者以及用户拥有的权限。 这是可能的,还是我必须制作group_perssions表?
我在视图中尝试了这个:
<% @groups.each do |group| %>
<div class="well well-small">
<h3><%= group.name %></h3>
Owner: <%= group.groupships.owner %> //True or false readout for development.
</div>
<% end %>
答案 0 :(得分:0)
我认为你给Groupship类的例子可能有些错误。不应该是......
class Group < ActiveRecord::Base
has_many :groupships
has_many :users, through: :groupships
end
一个群组可以拥有多个用户,一个用户可以拥有多个群组吗?
至于您提供的视图示例,您不能简单地调用group.groupships.owner
,因为group.groupships
是一个集合,而所有者布尔值是单个群组的属性。你可以这样做:
<% @groups.each do |group| %>
<div class="well well-small">
<h3><%= group.name %></h3>
Owners:
<%= group.groupships.each do |groupship| %>
<%= groupship.user.name %>:
<%= groupship.owner? %>
<% end -%>
</div>
<% end %>