组成员身份错误,让我脱掉头发

时间:2011-04-09 18:22:40

标签: ruby-on-rails-3

我收到此错误:

2011-04-09T18:13:17 + 00:00 app [web.1]:NameError(未初始化的常量Group :: Membership): 2011-04-09T18:13:17 + 00:00 app [web.1]:app / controllers / groups_controller.rb:25:in"how_members'

当我尝试在组控制器中使用Show_members方法时。我做错了什么?

user.rb

class User < ActiveRecord::Base
  require 'paperclip'
  # Include default devise modules. Others available are:
  # :token_authenticatable, :confirmable, :lockable and :timeoutable
  devise :database_authenticatable, :registerable, :confirmable,
         :recoverable, :rememberable, :trackable, :validatable
  has_and_belongs_to_many :roles
  has_many :articles
  has_many :ratings
  has_many :rated_articles, :through => :ratings, :source => :articles
  has_many :memberships, :dependent => :destroy
  has_many :groups, :through => :memberships
  ...

membership.rb

class Membership < ActiveRecord::Base
  attr_accessible :user_id, :group_id
  belongs_to :user
  belongs_to :group
  validates_uniqueness_of :user_id, :message => "You can only join one group!"
end

group.rb

class Group < ActiveRecord::Base
  require 'paperclip'
  attr_accessible :name, :group_admin, :about, :location, :created_at, :avatar
  validates_uniqueness_of :name, :group_admin
  validates_length_of :name, :in => 4..40
  has_many :memberships, :dependent => :destroy
  has_many :users, :through => :memberships
end 

group_controller

def show_members # members page
    @group = Group.find(params[:id])
    @members = @group.users    <= THIS LINE IS THE ERROR
    @group_admin = User.find(@group.group_admin)
    respond_to do |format|
      format.html
      format.xml  { render :xml => @group }
    end
  end

更新

def remove_user
    @membership = Membership.find(params[:user_id, :group_id])
    @membership.destroy
    authorize! :remove_user, @membership
    respond_to do |format|
        format.html { redirect_to(:back, :notice => 'User was successfully Removed.') }
      format.xml  { head :ok }
    end

我在show_members.html.erb中链接到的groups_controller中执行了此操作 错误可能来自于此吗?

2 个答案:

答案 0 :(得分:1)

天哪啊。我刚检查了git日志。显然,尽管我做了git commit -a -m“blah”,但是由于某种原因,git决定不将会员模型文件添加到repo中。我认为-a标志添加了所有内容?

答案 1 :(得分:0)

我没有看到您粘贴的代码中出现错误,但从您获得的错误代码判断,您必须在某个无法访问的位置具有常量值。您的代码中是否有任何Group.Membership调用? (也许是一个模块?)也许你打算写group.membership或其他东西。我真的无法发现其他任何事情:/

编辑:

是的,我看到一些应该引起问题的事情:

@group_admin = User.find(@group.group_admin)

group.admin是我在验证中看到的名称,您正在查找ID。它应该是find_by_group_admin。