2014-11-19 13 views
6

Tôi không thể nhận được giá trị id từ một mô hình.phương thức chưa xác định `id 'cho # <ActiveRecord :: Quan hệ []>

Mã của tôi:

session["game_space"] = params[:game_space_id] 

@player_space = PlayerSpace.where(game_space_id: session["game_space"], user_id: current_user.id) 

session["player_space"] = @player_space.id #<<<<===== The error occurs here 

redirect_to "show",:id => @player_space.id 

Thông báo lỗi:

Error: undefined method `id' for #<ActiveRecord::Relation []> 

bạn có thể giúp tôi về vấn đề này?

Trả lời

10

vấn đề:

  • đâu khoản trả kỷ lục đối tượng liên quan tích cực mà là một loại mảng (bộ sưu tập). Vì vậy, bạn phải chọn đối tượng để gọi phương thức id trên đó.

    @player_space = PlayerSpace.where (game_space_id: phiên [ "game_space"], user_id: current_user.id) .first

  • kết quả truy vấn của bạn/bộ sưu tập không có bất kỳ hàng/đối tượng. Vì vậy, gọi số #first sẽ trả về số không. Do đó, kết quả là nil#id sẽ gây ra lỗi.

Hy vọng bạn sẽ có được điểm!

+1

Nếu bạn mong đợi để có được một bản ghi, nó cũng có thể chấp nhận từ bỏ những đâu và làm find_by – DVG

+1

Nếu bạn mong đợi để có được một bản ghi, nó cũng được chấp nhận để từ bỏ nơi và làm find_by: 'PlayerSpace.find_by (game_space_id: session [: game_space], user_id: current_user.id)' – DVG

+0

Tôi không sử dụng. đầu tiên bởi vì tôi chỉ có một hàng. Bây giờ, tôi đặt đầu tiên và lỗi vẫn xảy ra. Lưu ý: nếu tôi thử: phiên ["player_space"] = @ player_space.name hoạt động. Vì vậy, tôi hy vọng tôi không thể truy cập id ... Tôi thực sự không biết. –

2

Bạn đang cố gắng để có được một id trên quan hệ ActiveRecord. Hãy thử điều này:

@player_space = PlayerSpace.where(game_space_id: session["game_space"], user_id: current_user.id).first

Sau đó lấy id của @player_space

2

Bạn đang nhận được một lớp học ActiveRecord::Relation, không phải là đối tượng mô hình. Bạn có thể lấy id từ một mục trong mối quan hệ. Nếu bạn chắc chắn rằng bạn đang đi để có được chính xác một mục trở lại, bạn chỉ có thể làm:

PlayerSpace.where(game_space_id: session["game_space"], user_id: current_user.id).first 
Các vấn đề liên quan