Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 如何从模型内部访问Sinatra的助手?_Ruby_Sinatra - Fatal编程技术网

Ruby 如何从模型内部访问Sinatra的助手?

Ruby 如何从模型内部访问Sinatra的助手?,ruby,sinatra,Ruby,Sinatra,我的模型上的一些方法需要访问当前活动用户。在routes和views中,这是由我编写的助手方法处理的,但我不知道如何找到从模型登录的用户 编辑:这是我的特定用例,用于上下文 我正在用Sinatra和Sequel写一个论坛。ForumThread模型有一个.searchquery\u字符串方法,该方法分解字符串并进行全文搜索,以及根据标记和线程状态进行过滤。特别是,线程状态要求访问当前活动用户,以确定线程是否有新内容 我不喜欢做ForumThread.searchsomething,当前的用户,但

我的模型上的一些方法需要访问当前活动用户。在routes和views中,这是由我编写的助手方法处理的,但我不知道如何找到从模型登录的用户

编辑:这是我的特定用例,用于上下文

我正在用Sinatra和Sequel写一个论坛。ForumThread模型有一个.searchquery\u字符串方法,该方法分解字符串并进行全文搜索,以及根据标记和线程状态进行过滤。特别是,线程状态要求访问当前活动用户,以确定线程是否有新内容


我不喜欢做ForumThread.searchsomething,当前的用户,但我也不喜欢让模型神奇地访问路由器。

模型不应该访问这个。如果它需要这种访问,那么应该将变量传递给它,比如Acticle.by_user@current_user其中by_user是一个接受用户作为参数的作用域。我同意,这正是我一直在做的,但是我觉得如果一些方法能够在幕后了解用户,而不是依赖它作为一个方法参数,那会更干净。我可以理解这种诱惑,但我不认为这是一个合适的设计概念。这种类型的逻辑应该在控制器中处理,而模型应该相应地处理自己的逻辑。如果您真的想这样做,您只需要在模型文件中使用helper即可。e、 g.需要'user\u helper'或者我相信你可以通过全名调用这些方法,例如UserHelper::current\u user,而无需要求。使用有关我的特定场景的更多信息更新问题。好的,那么为什么不向用户添加一个方法来处理此问题呢?例如,current\u user.search\u forumsMething,那么用户模型将知道它是自己的实例从那里执行论坛搜索。