Ruby - NoMethodError(nil的未定义方法:NilClass):

Dod*_*nas 5 null ruby-on-rails exception nomethoderror

我在弄清楚我做错了什么时遇到了一些困难.我的ActiveRecord查询正在返回nil,我认为这会导致NoMethodError被引发.

这就是我所拥有的:

@number_exclude_list = ["1234567890", "2223334545"] 
@available_number = UserNumber.where.not(:user_num => @number_exclude_list)
Run Code Online (Sandbox Code Playgroud)

返回一组空行:

=> #<ActiveRecord::Relation []>
Run Code Online (Sandbox Code Playgroud)

那么,我有:

if (@available_number.empty?)
   inform_user_empty
else
   do_my_other_function
Run Code Online (Sandbox Code Playgroud)

但是,我得到:

`NoMethodError (undefined method 'inform_user_empty' for nil:NilClass)`
Run Code Online (Sandbox Code Playgroud)

我试过了:@available_number.blank?和`@available_number.nil?

我仍然得到相同的NoMethodError.我在这里做错了什么想法?

Raj*_*tan 1

请在控制台中运行以下行:

@available_number = UserNumber.where.not(:user_num => @number_exclude_list)
Run Code Online (Sandbox Code Playgroud)

它返回一个,ArgumentError: wrong number of arguments (0 for 1+)因为它不是检查 Rails activerecord 中条件的方法NOT IN。

将其替换为:

User.where('user_num NOT IN (?)',@number_exclude_list)
Run Code Online (Sandbox Code Playgroud)

然后执行以下操作:

if @available_number == nil
   inform_user_empty
else
   do_my_other_function
end
Run Code Online (Sandbox Code Playgroud)

希望能解决这个问题。如果它真的对您有帮助,请告诉我。