我是多态关联的新手,目前有点迷失。
我正在尝试向我的网站添加一项功能,用户可以向不同类型的专业人士询问报价。每个专业人士都拥有特定类型的报价,例如:
模型photographer
拥有photographerquotes
我这样做是因为每种类型的引用都非常可靠于它所属的专业模型,并且数据库模型对每种类型都是特定的。
虽然有一件事情与那些引号模型不变:它们可以通过user
或professionnal
然后我制作了不同的quotes
模型 可评论 但是当我需要在评论控制器中创建可注释变量时,我有点迷失#create行动。
本教程说我们可以制作模块https://gorails.com/episodes/comments-with-polymorphic-associations(15:00)
这里的railscast:https://www.youtube.com/watch?v=WOFAcbxdWjY使用以下技巧直接从地址栏中获取正确的引用模型:
def load_commentable
klass = [Article, Photo, Event].detect { |c| params["#{c.name.underscore}_id"] }
@commentable = klass.find(params["#{klass.name.underscore}_id"])
end
实际上两者似乎都违反直觉,因为我不是Ruby专家,甚至还不是Rails专家。
两种解决方案中的一种是理想的解决方案吗? 2017年在轨道5下开发还有哪些可能性?
编辑
实际上还有第三种可能性:
将表单中的quote
模型类型和id作为隐藏字段传递。但是这个人的gorails教程说任何人都可以为我们传递这些数据,这不是真的安全......
我不是HTPP专家,但我认为CREATE方法无法在地址栏中复制。我以为只有GET方法才是'公开'......