Ruby on rails 课程,了解Rails如何了解要获取的模型
我已在我的Ruby on rails 课程,了解Rails如何了解要获取的模型,ruby-on-rails,ruby,session,Ruby On Rails,Ruby,Session,我已在我的companys\u控制器中的方法中分配了会话[:active\u company]=@company 在我的application.html.erb中,我有一行: <li><%= link_to "Company", session[:active_company], :method => :get %></li> :获取%> 单击此按钮时,Rails知道如何使用companys\u controllershow方法 我是Rails的新手
companys\u控制器中的方法中分配了会话[:active\u company]=@company
在我的application.html.erb
中,我有一行:
<li><%= link_to "Company", session[:active_company], :method => :get %></li>
:获取%>
单击此按钮时,Rails知道如何使用companys\u controller
show方法
我是Rails的新手,这个项目是我第一次自己添加会话变量,所以如果有人能帮忙,我有几个问题:
Rails如何知道如何使用公司控制器?它是否查看会话中存储的内容,并知道它是一个@company,因此转到该控制器的get方法
添加会话数据时是否存在陷阱或安全问题?有没有更好的方法来建立活跃的公司
与其在会话中存储完整的公司记录,不如只存储id,然后创建一个助手方法来检索该公司记录?这是否会降低应用程序的速度,因为它总是要执行搜索
感谢您观看1)Rails非常传统。它知道session[:active_company]对象是company类型,按照惯例,该模型具有类似于/companys/{id of object}
的路由。如果您传入一个不是活动记录模型的对象,您将得到一个错误,并看到Rails正试图在该对象上调用Model\u name
。是的,你的假设是正确的
2) 我认为这一点都不安全。只要您的应用程序支持SSL,我就看不到有人进行会话劫持或其他任何操作。在一个类似的应用程序中,我只是对每个请求进行了查找。我在会话中存储的唯一内容是用户的id。下面是一个关于会话和安全性的指南
3) 只要您的数据库被正确地索引,每次进行查找都不会有什么坏处。大多数数据库都有内部缓存机制来加速类似的重复查找。3)您应该只在会话
哈希中存储id。避免在会话中存储整个对象。使用检索公司记录
@active_company = Company.find( session[:active_company_id] )
2) 使用会话是跟踪特定于会话的内容的好方法。但是,将整个对象存储在会话中可能会使对象在cookie中可用。(不过我对此不是很确定)
1) Rails使用link_to
中的第二个参数(神奇的好)猜测您的意图。当您传递公司对象的会话[:active_company]
时,它将设置公司控制器的路径以及对象的id。结果显示路径为/companys/:id
如果将link_指定给对象数组,则不会传入任何id,从而导致/companys
。默认情况下,link\u to
被视为动词GET
简而言之,它应该是这样的:
谢谢您的回答。我喜欢铁路