模型看不到has_many关系,得到

时间:2017-02-27 19:41:50

标签: ruby-on-rails database models

我在rails模型中遇到关联问题。

我有这样的代码

class Member < ApplicationRecord
  has_many :rooms
  has_many :tokens, dependent: :destroy

  has_secure_password
  //[...] - some validations not according to my model

然后在我的控制器中我有

def create
  unique_id = SecureRandom.uuid
  @room = @current_member.rooms.new(unique_id: unique_id)
  @room_details = RoomDetail.new(video_url: 'test', room: @room)

  if @room.save
    render json: @room, status: :created, location: @room
  else
    render json: @room.errors, status: :unprocessable_entity
  end
end

最近一切都按原样运作。现在,在创建令牌表+将其添加到模型后,它说

"status": 500,
"error": "Internal Server Error",
"exception": "#<NoMethodError: undefined method `rooms' for #<Member::ActiveRecord_Relation:0x00560114fbf1d8>>",

我正在使用此方法。

def authenticate_token
  authenticate_with_http_token do |token, options|
    @current_member = Member.joins(:tokens).where(:tokens => { :token => token })
  end
end

1 个答案:

答案 0 :(得分:2)

这需要更改以获取实例(不是关系)。只需将first添加到最后。

authenticate_with_http_token do |token, options|
    @current_member = Member.joins(:tokens).where(:tokens => { :token => token }).first
end

注意,错误发生在ActiveRecord_Relation对象上。

另外,不确定如何调试,但我建议使用https://github.com/charliesome/better_errors来查看错误并检查对象。这将是一件容易的事。