ruby on rails 多对多关联,如果建立和删除关系

发布于 2021-11-25 14:26:50 字数 281 浏览 722 评论 6

@Silentboy 你好,想跟你请教个问题:

我通过has_and_belongs_to_many ,关联了两个多对多的关系,一个是user,一个是product,然后我现在想通过在一个显示了product.all的页面里,通过一个按钮关注某个product,给当前user和这个product建立一个关系,或者删除关系,该怎么实现呢?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

奢望 2021-11-26 09:56:54

既然错误都指明了是未定义的方法,那就看看是哪里用了,或者哪个redirect-to 是不是指向了这么个路径,因为这个路径就不应该存在,肯定会报错,而且路由没必要用resources 一个create 一个destroy就行了,中间表控制器方法也是这两个,提交的时候指明控制器和动作,我已经讲的够清楚了

嘦怹 2021-11-26 09:56:40

你好像还没理解这个中间表的意思,看下下面这个图:(你把assembiles当成products,把parts当成users就行了)

保存的时候就按照正常的create动作就行了,把user_id和product_id保存到中间表就行了,关注按钮是一个表单吧,你把user_id和product_id保存到:user_product中,然后在中间表的控制器的create动作接收并保存

@user_product = params[:user_product]
if @user_product.save
  ……………………………………………………
end

调用的时候比如你找一个用户关注多少产品,那就

@products = []

User_product.find_all_by(@user.id).each do |p|

@products << Product.find(p.product_id)

end

够清楚了吧!

看下:http://guides.rubyonrails.org/index.html  里面的Models

成熟稳重的好男人 2021-11-26 09:50:56

你好,非常感谢你的回答,我是新手,有些不太明白我设置了has_and_belongs_to_many的关系,还要设置has_many?还有例如我发出一个动作,我是user.product.save(user_id: , product_id: ),这样保存吗?还是不太明白如何保存关系到中间表。

白龙吟 2021-11-26 09:49:10

这样的话你的建立一个中间关系表user_product,一个是user_id 一个是product_id ,然后分别设置has_many关联,当当前用户想关注产品的时候,点击关注出发一个动作,将user_id和product_id插入到user_product里面就OK了,如果想要实现点击不刷新关注,看一下ajax就OK了,这样说应该明白了吧。

坚持沉默 2021-11-26 07:53:10

中间表是一个表,你不能只建控制器,模型也是需要的,还有,你的命名方式不符合标准,找下contrller和models的命名规范,这里就不说了,自己动手才记得清,还有,有问题请在这说哦。

哑剧 2021-11-26 07:29:05

你好像还没理解这个中间表的意思,看下下面这个图:(你把assembiles当成products,把parts当成users就行了)

保存的时候就按照正常的create动作就行了,把user_id和product_id保存到中间表就行了,关注按钮是一个表单吧,你把user_id和product_id保存到:user_product中,然后在中间表的控制器的create动作接收并保存

@user_product = params[:user_product]
if @user_product.save
  ……………………………………………………
end

调用的时候比如你找一个用户关注多少产品,那就

@products = []

User_product.find_all_by(@user.id).each do |p|

@products << Product.find(p.product_id)

end

够清楚了吧!

看下:http://guides.rubyonrails.org/index.html  里面的Models

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文