2017-02-04 1 views
-1

ユーザーには多数のカードとカードがあり、has_many through関係を持っています。レコードにユーザーがいれば?

# card.rb 
has_many :card_assignments 
has_many :users, :through => :card_assignments 

# user.rb 
has_many :card_assignments 
has_many :cards, :through => :card_assignments 

# card_assignment.rb 
belongs_to :user 
belongs_to :card 

私の見解では、現在のユーザーがカードに所属するユーザーの1人であることを確認したいと思います。

+0

はあなたが使用できるトリックを行う必要があります[ '存在する?'](http://devdocs.io/rails~5.0/activerecord/findermethods#method-i-exists-3F)、例えば'@ card.card_assigments.exists?(user_id:current_user.id)'または 'current_user.card_assignments.exists?(card_id:@ card.id)'のようになります。これは、データベースの照会を行うたびに実行されるので、チェックしたいカードの数に応じて、 'current_user.card_assignment_ids.include?(@ card.id)'も役立つかもしれません(データベースを自動的にキャッシュする必要がありますクエリ結果)。 –

答えて

2

これは

if @card.user_ids.include?(current_user.id) 
関連する問題