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

find_foreignメソッドが入っUser Modelていて、それを呼び出そうとしていますArray of the Object of the Meetings

使うだけ

some_user.find_foreign
于 2012-10-30T12:25:55.683 に答える
0

ここにアクセスできselfます:

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

しかし、なぜこれを書いたのかわかりませんか?

some_user.meetings現在のユーザー ID で既に会議をフィルター処理します。ここでブロックが許可されているかどうかさえわかりません!

于 2012-10-30T11:32:33.933 に答える