在执行查找后,ruby/rails是否可以对结果集进行排序?例如,是否可以做这样的事情
警告:不起作用
if type == 1
@items = mycompany.items
else
@items = myhome.items
end
@items = @items :order => "created_at"
Run Code Online (Sandbox Code Playgroud)
我会假设这样的事情应该是可能的,但我仍然是RoR的新手,似乎无法在谷歌上找到任何东西.
我希望能够使用单个正则表达式(如果可能)要求字符串适合[A-Za-z0-9_]但不允许:
有效
test_0123t0e1s2t30123_testte0_s1t23t_t无效
t__t____01230123_0123_test_test123test_test123_这样做的目的是过滤我正在处理的网站的用户名.出于特定原因,我已达到规则.
仅包含数字和/或符号的用户名可能会导致路由和数据库查找出现问题./users/#{id}允许的路由id是用户的id或用户的名称.所以名称和ID不应该碰撞.
_test 看起来很奇怪,我不相信它是有效的子域名,即 _test.example.com
我不喜欢t__t作为子域的外观.即t__t.example.com
这是我的架构
class Menu < ActiveRecord::Base
belongs_to :menuable, :polymorphic => true
end
class Page < ActiveRecord::Base
has_one :menu, :as => :menuable
end
class Links < ActiveRecord::Base
has_one :menu, :as => :menuable
end
Run Code Online (Sandbox Code Playgroud)
我想使用link_to链接到菜单视图中的多态类,例如
<%= link_to menu.name, menu.menuable %>
Run Code Online (Sandbox Code Playgroud)
这有效,但是当我想要的是生成链接时,这将从数据库中检索可菜单对象.你可以想象如果我的菜单很大,这将会让我的应用程序陷入困境.
当我将可菜单字段视为多态时,Rails创建了menuable_type和menuable_id.我可以使用什么来生成多态页面的链接,而不是使用巨型switch语句编写辅助函数(例如,如果我有大量可菜单的'子类'?)
我将在明年初(2010年)开始使用Rails开展一个大型新项目.有人可以给我建议我应该使用哪个版本的Rails以及为什么?
是否有一个简单的HTTP服务器可以在当前的PHP项目路径中运行,如Rails的脚本/服务器(webrick)?
我想从模型中提取颜色列表并将颜色选择列表放入视图中。选项具有颜色代码的价值。我想将选项的背景颜色更改为其值。以下是我尝试做的两种方法,但结果是它会改变整个选择列表的颜色,但不会改变具有单个颜色的单个选项的颜色。
<p>
<b>Background color</b><br />
collection_select(:setting, :bg_color, @colors, :code, :name,
options ={:prompt => "-Select a color"}, html_options = {:style => "background-color: #3f3"})
</p>
<p>
<b>New Background color</b><br />
select_tag("setting[bg_color]", "<option>-Select a color</option>" +
options_from_collection_for_select(@colors, :code, :name, html_options = {:style => "background-color: #3f3"}))
</p>
Run Code Online (Sandbox Code Playgroud)
我希望它生成类似以下内容的内容:
<option value='color_code' style='background-color: color_code' >color_name</option>
Run Code Online (Sandbox Code Playgroud)
这样,选项中的颜色对用户也是可见的。
无论如何,我们可以自定义选项吗?
提前致谢。
我有一个布尔表达式的问题,当我做了一个logger.debug我得到了奇怪的结果,所以我将我的日志代码简化为以下内容,并且惊讶地看不到任何'false'被打印.
在我的控制器中记录代码:
logger.debug 'true'
logger.debug true
logger.debug
logger.debug 'false'
logger.debug false
logger.debug
logger.debug '1 == 1'
logger.debug 1 == 1
logger.debug
logger.debug '1 == 0'
logger.debug 1 == 0
Run Code Online (Sandbox Code Playgroud)
其中打印出以下内容
true
true
false
1 == 1
true
1 == 0
Run Code Online (Sandbox Code Playgroud)
......?我希望看到错误.当我在控制台中运行'1 == 0'或'put false'时,我得到了错误.我错过了什么吗?
任何想法为什么不打印'假'?
ruby版本:1.8.7-p352
rails版本:2.3.2
我正在做以下查询......
Status.where(:status => params[:cat_id])
Run Code Online (Sandbox Code Playgroud)
但是我想通过created_at列来排序结果.我尝试过所有符合逻辑的东西
Status.where(:status => params[:cat_id]), :order => "created_at DESC"
Run Code Online (Sandbox Code Playgroud)
和
Status.where(:status => params[:cat_id], :order => "created_at DESC")
Run Code Online (Sandbox Code Playgroud)
但似乎没什么用.
订购结果的最佳方法是什么?
非常感谢任何帮助,谢谢!
我想使用find_by_sql方法代替活动记录查询接口,因为我在编写自己的SQL时具有灵活性.
例如,
在SQL中,将查询中的表从最小到最大排序,这被认为是一种很好的做法.使用活动记录查询界面时,您必须从可能是最大表的结果模型开始.
我还可以通过在连接本身中包含目标表并包含多个表中所需的列来轻松避免N + 1问题.
我想知道是否有理由我不应该使用find_by_sql选项,特别是当我将编写ANSI SQL时,它应该与所有(如果不是大多数)数据库兼容.
谢谢!
我有这样的方法
def className
def method_name
some code
rescue
some code and error message
end
end
Run Code Online (Sandbox Code Playgroud)
那么,如何写下rspec来测试救援块..?