我想缓存一个Post视图,但视图取决于当前用户的权限(例如,我只显示"编辑"链接current_user.can?(:edit, @post))
所以我希望我的缓存键包含当前用户的CanCan功能的表示,这样当用户的能力改变时我可以使缓存无效
那么:我怎样才能得到一个表示当前用户能力的字符串,以便2个具有相同能力的不同用户生成相同的"能力字符串"?
我已经尝试过user.ability.inspect,但是对于具有相同能力的不同用户,这不会产生相同的字符串
组合框是一个自动完成的文本框,也是一个下拉列表(例如,如果您愿意,可以从列表中进行选择).
"最佳"意味着组合:稳定,外观/感觉,API /可定制性,成熟度.
我正在建立一个网上商店来销售"绿色超大号T恤"等产品.即,同样的衬衫可以有很多尺寸/颜色,不同的组合可以卖光,不同的组合可能有不同的价格等.
我的问题是我应该如何在我的Rails应用程序中建模这些产品(或者实际上如何在任何应用程序中进行建模).
我目前的想法是:
Class Product
has_many :variants, :through => :characteristics
has_many :characteristics
end
Class Characteristic
belongs_to :product
belongs_to :variants
end
Class Variant
has_many :products, :through => :characteristics
belongs_to :characteristic
end
Run Code Online (Sandbox Code Playgroud)
因此,每个产品将具有一个或多个特征(例如,"颜色","尺寸"等),并且每个特征将具有一个或多个变体(例如,"红色","蓝色"等).
这种方法的问题是我在哪里存储价格和库存?即,给定产品的价格和库存由其特征所采用的变体决定.(绿色可能比红色更贵,大可能缺货等).
我有一个想法是给产品"base_price",并让变体修改它,但这看起来过于复杂(并且可能不起作用).
Ruby中最好的方法是什么(使用Rails,如果相关的话)来大写字符串的第一个字母?
请注意,这String#capitalize不是我想要的,因为除了大写字符串的第一个字母之外,这个函数还使所有其他字符小写(我不想要它 - 我想保持它们不受影响):
>> "a A".capitalize
=> "A a"
Run Code Online (Sandbox Code Playgroud) 你可以在我的说唱歌词解释网站上做的一件事是"喜欢"解释(一旦你登录):
http://dl.getdropbox.com/u/2792776/screenshots/2010-01-17_1645.png
我想向未登录的用户显示"赞"链接,然后,当未登录的用户点击"赞"时,向他显示一个带有"登录或注册"表单的灯箱(如Digg)/Reddit)
http://dl.getdropbox.com/u/2792776/screenshots/2010-01-17_1650.png
实现这一目标的最佳方法是什么?
目前我正在使用这种方法:
/annotations/:id/vote(POST主体指示用户是喜欢还是"不喜欢").该vote注解控制器操作有一个require_user before_filter看起来像这样:
def require_user
unless current_user
store_desired_location
flash[:notice] = "You'll need to login or register to do that"
redirect_to login_path # map.login '/login', :controller => 'user_sessions', :action => 'new'
return false
end
end
Run Code Online (Sandbox Code Playgroud)user_sessions#new 看起来像这样:
def new
@user_session = UserSession.new
respond_to do |format|
format.html {}
format.js {
render :layout => false
}
end
end
Run Code Online (Sandbox Code Playgroud)问题是重定向似乎无法在javascript上正常工作:
http://dl.getdropbox.com/u/2792776/screenshots/2010-01-17_1700.png
如何让它正确重定向?
此外,这是正确的一般方法吗?另一个想法是当没有登录用户时,在javascript中为"Like"链接附加一个不同的处理程序(但我认为这种方法不能很好地扩展到我想以相同方式处理的其他操作)
我想根据这个架构验证用户名:
这个正则表达式满足上面的1和2,但我无法弄清楚如何满足3:
/^[a-zA-Z\d][\w\-]+$/
Run Code Online (Sandbox Code Playgroud)
(我正在使用Ruby,如果那是相关的)
假设每一个Project has_many Tasks.
如果我做
some_project.tasks = list_of_tasks
some_project.save
Run Code Online (Sandbox Code Playgroud)
即使保存失败,项目的任务也会更新.如果list_of_tasks包含新记录,即使保存失败,项目的任务也会被删除!哇!
如果保存失败,项目应该具有与我开始搞乱之前相同的任务.我如何得到这种行为,为什么不是默认行为?
我正在修复客户端应用程序中的一些批量分配漏洞,我想确保Rails不会默默地丢弃大规模分配受保护属性的尝试.相反,我想抛出一个异常,所以我可以调查.
即,每当这通常出现在日志中时:
WARNING: Can't mass-assign these protected attributes: ...
Run Code Online (Sandbox Code Playgroud)
我想抛出异常(或者另外)
编辑:我正在使用Rails 2.3.4
Napkee声称:
只需按一下按钮,即可将Balsamiq Mockups导出为HTML/CSS/JS和Adobe Flex 3.
- Balsamiq的完美伴侣
- 无需编码技能
- 一次使用后自行支付
如果真的"有效",那么Napkee可能会非常有用.
Napkee的工作是否像宣传的一样?导出的HTML的质量是什么?它是Balsamiq(我喜欢)的必备伴侣吗?
这是一个相当标准的Rails表单的摘录:
<p>
<%= f.label :from_station %> <%= f.text_field :from_station %>
</p>
<p>
<%= f.label :to_station %> <%= f.text_field :to_station %>
</p>
Run Code Online (Sandbox Code Playgroud)
默认情况下,这样呈现如下:
alt text http://img412.imageshack.us/img412/127/picture6u.png
这看起来不太好,因为文本字段不对齐.使表单更像这样的最简单方法是什么:
alt text http://img193.imageshack.us/img193/746/picture7shk.png
我已经尝试width在<label>s 上设置样式属性,但是这个属性似乎没有做任何事情.
activerecord ×2
ruby ×2
attributes ×1
autocomplete ×1
balsamiq ×1
caching ×1
cancan ×1
combobox ×1
css ×1
e-commerce ×1
javascript ×1
modeling ×1
regex ×1
string ×1