1

scopeそのため、モデルにを書き込もうとするとuser、それを機能させることができないようです。

私の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

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ます。

これらの質問をここここで調べましたが、私の問題には何の光も当てられませんでした。

4

1 に答える 1

2

joins関連付けをリストする必要があるのは、それ自体ではなく、のみです。したがって、次のようになります。

scope :api_user, lambda { |member_code| joins(:user_profile).where('user_profiles.member_code = ?', member_code) }
于 2013-01-22T17:16:27.000 に答える