0

我有一个模型

class User < ActiveRecord::Base
  # Include default devise modules. Others available are:
  # :token_authenticatable, :confirmable,
  # :lockable, :timeoutable and :omniauthable
  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :trackable, :validatable
  has_many :meetings, :dependent => :destroy do 
    def find_foreign
      Meeting.where("user_id <> ?", id)
    end
  end

  # Setup accessible (or protected) attributes for your model
  attr_accessible :email, :password, :password_confirmation, :remember_me
  # attr_accessible :title, :body

end

当我试图让用户的外国会议像这样

some_user.meetings.find_foreign

我收到一个错误

NoMethodError (undefined method `id' for []:ActiveRecord::Relation):

因为 find_foreign 中的 self 是一个数组。如何从此方法中检索 User.id ?

4

2 回答 2

0

你可以self在这里访问:

def find_foreign
  Meeting.where("user_id <> ?", self.id)
end

但是不知道为什么要写这个?

some_user.meetings将已经按当前用户 ID 过滤会议。我什至不知道这里是否允许阻塞!

于 2012-10-30T11:32:33.933 回答
0

find_foreign方法在User Model,你正试图调用它Array of the Object of the Meetings

只需使用

some_user.find_foreign
于 2012-10-30T12:25:55.683 回答