模型关联
class User < ActiveRecord::Base
has_many :boards
has_many :cards, through: :boards
end
class Board < ActiveRecord::Base
belongs_to :user
has_many :cards
end
class Card < ActiveRecord::Base
belongs_to :board
end
检索记录
卡片和纸板模型有一个名为“关闭”的属性。 当我检索属于current_user的所有卡时,我想过滤出'closed'等于true的板卡和卡片。
即。
如果board.closed == true,则该板及其所有相关卡被过滤掉
如果card.closed == true,则此个人卡被过滤掉
这不起作用,但显示了我想要做的事情:
current_user.cards.where(card.closed == false, card.board.closed == false)
答案 0 :(得分:1)
Card
.joins(:board)
.where(
cards: { closed: false },
boards: { user_id: current_user.id, closed: false }
)
或者,如果你坚持从current_user
开始:
current_user
.cards
.joins(:board)
.where(cards: { closed: false }, boards: { closed: false })
答案 1 :(得分:0)
我能够用以下方法过滤出已关闭的牌和属于封闭牌的牌:
current_user.cards.to_a.delete_if { |card| card.board.closed == true || card.closed == true }