Ruby 通过Rails关联进行查询
我有两个模型:商店和用户。用户属于商店,一个商店有很多用户。用户和店铺分别创建,然后用户添加一个店铺,将其店铺id更改为@Shop.id 我需要@shop.users查询所有属于商店的用户。但我不知道如何做到这一点。当前,唯一的连接是关联,当用户使用此按钮选择店铺时,@user.shop_id将更新为正确的店铺: 视图: 以下是ShopsController客户中的查询Ruby 通过Rails关联进行查询,ruby,ruby-on-rails-4,associations,Ruby,Ruby On Rails 4,Associations,我有两个模型:商店和用户。用户属于商店,一个商店有很多用户。用户和店铺分别创建,然后用户添加一个店铺,将其店铺id更改为@Shop.id 我需要@shop.users查询所有属于商店的用户。但我不知道如何做到这一点。当前,唯一的连接是关联,当用户使用此按钮选择店铺时,@user.shop_id将更新为正确的店铺: 视图: 以下是ShopsController客户中的查询 def customers @shop = Shop.find(params[:id]) @customers = S
def customers
@shop = Shop.find(params[:id])
@customers = Shop.users
end
此查询为我提供了nil:nilclass的错误未定义方法“users”,因此在商店中找不到用户
当用户选择店铺时,我如何创建正确的关联,而不仅仅是更新店铺id参数?您想要的是特定店铺的用户,而不是抽象店铺模型的关系。因此,在您的示例@shop中,您必须调用shop实例上的.users 你的问题不是很清楚,但我希望这能有所帮助。还要注意,在问题文本中,您实际上询问了@shop.users,但您的代码示例为shop.users:。我认为您实际上有两个问题:如何访问商店的所有用户如何访问关联实例?以及如何将一个对象分配给一个属于关系 请注意,customers方法声明可以找到具有该id的店铺,否则将抛出错误 要设置店铺,可以使用ActiveRecord,如下所示:
@shop = Shop.find(params[:shop_id])
@user.shop = @shop
你问什么并不清楚。你能告诉我们目前的方法有什么问题,什么不起作用,你到底想做什么。。。您是否面临任何错误?编辑以包含错误。嗯,错误非常明确。。。是否确定已分配参数[:id]并与现有店铺匹配?在客户操作中:@customers=@shop.usersHaha@TheCha͢mp。。。为什么我错过了><但是,错误应该是Shop类的未定义方法用户,对吗?
def customers
@shop = Shop.find(params[:id])
@customers = Shop.users
end
def customers
@shop = Shop.find(params[:id])
@customers = @shop.users
end
@shop = Shop.find(params[:shop_id])
@user.shop = @shop