【问题标题】:Rails 3 scope association error when using lambda使用 lambda 时 Rails 3 范围关联错误
【发布时间】:2013-01-22 16:42:06
【问题描述】:

所以尝试在我的user 模型中编写scope,但我似乎无法让它工作。

我的user 模型看起来有点像这样

class User < ActiveRecord::Base
   has_one :user_profile

   scope :api_user, lambda { |member_code| joins(:users, user_profiles).where('user_profiles.member_code = ?', member_code)}

我的user_profiles 模型看起来像这样:

class UserProfile < ActiveRecord::Base
   belongs_to :user

当我像这样在 Rails 控制台中调用 scope 时:

User.api_user(4321)

我得到这个错误:

ActiveRecord::ConfigurationError: Association named 'users' was not found; perhaps you misspelled it?

我是范围的新手,如果我这样做,我知道如何在没有它们的情况下执行此操作:

User.find_by_id(UserProfile.find_by_member_code(4321).user_id)

它返回的正是我想要的。但是我需要多次使用它,(写一个api)所以我真的很想让scope工作。

查看了herehere 的这些问题,但它们并没有说明我的问题。

【问题讨论】:

    标签: mysql ruby-on-rails-3 activerecord lambda scope


    【解决方案1】:

    joins 只需要列出关联,而不需要列出它本身。所以它应该是这样的:

    scope :api_user, lambda { |member_code| joins(:user_profile).where('user_profiles.member_code = ?', member_code) }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-09
      • 1970-01-01
      • 2013-12-22
      • 1970-01-01
      相关资源
      最近更新 更多