使用多个条件的rails中的NoMethodError

时间:2014-12-28 22:15:54

标签: ruby-on-rails activerecord nomethoderror

我似乎无法获得我的条件的逻辑来为此查询工作。我可以让@showemail = PreferenceSetting.find(1)工作......但是当我尝试添加条件时,它会不断地抛出一个" NoMethodError"。我在rails上相当新,我真的坚持这个。

 def show
   @showemail = PreferenceSetting.where('user_id = ?', params[:u]).where('user_preference_id = ?', 1)
 end

这是我的视图代码

 <%= @showemail.prefers %>

每次我尝试访问&#39; show&#39;查看它说&#34;未定义的方法`更喜欢&#39;。

我的模特

class PreferenceSetting < ActiveRecord::Base
  belongs_to :users_preference,  inverse_of: :preference_settings
  belongs_to :user, inverse_of: :preference_settings
end

类UserPreference&lt;的ActiveRecord :: Base的       has_many:preference_settings,inverse_of :: user_preference     端

1 个答案:

答案 0 :(得分:1)

find返回一个实例,而where方法返回一个ActiveRecord :: Relation对象。

调整show操作的代码,如下所示:

def show
  conditions = {user_id: params[:u], user_preference_id: 1}
  @showemail = PreferenceSetting.where(conditions).last

  # you could also use: PreferenceSetting.find_by(conditions)
end