在我的应用程序中,用户可以加入Houses。
在Houses
表中是一个整数类型的bedrooms
列。
鉴于
h = House.new
h.users
我们可以看到所有加入特定住宅的用户。
一旦h.users == h.bedrooms
,我想从房屋#index view中删除那所房子。
HousesController的索引操作目前如下所示:
def index
@houses = House.all
end
House.rb
has_many :bookings
has_many :users, through: :bookings
为了达到我想要的效果,我应该将@houses设置为什么?
答案 0 :(得分:0)
为House模型中的用户数添加计数器缓存
然后在HousesController中
def index
@houses = House.where("users_count < ?",bedrooms)
end
答案 1 :(得分:0)
这取决于关联的定义方式,即:用户和预订之间是否存在 1对1 关系?
如果是这样的话,那就行了:
class User
has_many :bookings
has_many :houses, through: :bookings
end
# column 'user_id', integer
# column 'house_id', integer
class Booking
belongs_to :user
belongs_to :house
end
# column 'bedrooms', integer
class House
has_many :bookings
has_many :users, through: :bookings
def is_full?
bedrooms <= bookings.count
end
end