TL; DR: Microdata强制您在与此itemprops vaule的itemtype相同的元素上使用itemprop.如果你想将你的模板分解为部分,你如何处理这个问题?元素可能只出现在两个位置中的一个位置,无论是在包含模板还是包含的部分中,两者都不能很好地工作.
我正在使用带有haml的Rails,但我想我的问题适用于任何模板引擎,您可以将模板拆分为较小的部分.我大量使用partials,这意味着我的模板通常不超过10行代码.但是将微观数据拟合到这些中似乎过于复杂,那么你应该如何正确地使用微数据?
举个例子:
#app/views/article/show.html.haml
%p Hey, Welcome! Read This wonderful article:
= render @article
#app/views/articles/_article.html.haml
%div[ article ]
%h1= @article.title
%p= @article.description
%div= render @article.video
#app/views/videos/_video.html.haml
%div[ video ]
%h2= video.file_name
%video{ src: video.url }
Run Code Online (Sandbox Code Playgroud)
现在使用微数据:
#app/views/articles/_article.html.haml
%div[ article ]{ itemscope: true, itemtype: 'http://schema.org/Article' }
%h1{ itemprop: 'name' }= @article.title
%p{ itemprop: 'description' }= @article.description
%div{ itemprop: 'video' }= render @article.video
Run Code Online (Sandbox Code Playgroud)
然后什么?我必须VideoObject
在同一个div上添加itemtype,itemprop: 'video'
因为这就是微数据的工作方式.所以:
#app/views/articles/_article.html.haml
%div{ itemprop: 'video', itemscope: true, itemtype: 'http://schema.org/VideoObject' }= render …
Run Code Online (Sandbox Code Playgroud) 我想强制用户在注册时选择一个强密码.
我知道,那里有很多jquery密码强度计,我很可能也会使用其中一个.但这并没有真正强制任何人选择强密码.注册表单也必须在没有启用js的情况下可用,因此仍然可能使用弱密码注册.
帐户必须最安全,因为如果您已登录,则可以查看其他帐户的数据,在任何情况下我都不希望这些数据.所以我想在这里寻求最大的安全性,因此我认为,最重要的是只允许使用强密码.
所以,
如何设置和自定义验证最小密码强度的要求?我唯一能在设计配置文件中找到的是密码长度.我应该用这个任务的另一个宝石吗?
示例:我有一个Person
类和一个Role
类.我想从两者中提取角色功能Role
并将其提取Person
到mixin中.我得到两个mixins:Actable
包括在内Role
和Adaptable
for Person
.
我有时候想不出适合的英语单词.在上面的例子中,适应性似乎更适合角色而不是人,因为角色可以适应,因此是适应性的.一个更好的名字将是多才多艺的,但它打破了mixin名称的惯例,以...结束.(但它仍然是一个形容词.)
其他示例是当我想添加允许检查的模块时,如果允许Person查看其他人.你怎么找到这个结尾的名字?Viewable
似乎是不合适的,可以看到的人应该是可见的.我showable
现在坚持(适合控制器中的方法名称).但话又说回来,这是该人可以证明,这应该是showable不希望显示的人.
所以我想我的问题是,当没有适当的英语形容词结尾...能够用于模块名称时,我应该选择另一个形容词不能结束...能够或者我应该给它一个不完全的名称适合?
我正在使用具有安全扩展的设计来验证强密码.
当我尝试使用已经收到的电子邮件注册帐户时,我在错误哈希中收到错误"已经收到电子邮件"两次.
我的用户模型如下所示:
class User < ActiveRecord::Base
# Include default devise modules. Others available are:
# :token_authenticatable, :confirmable,
# :lockable, :timeoutable and :omniauthable
# :trackable deleted
devise :database_authenticatable, :registerable, :secure_validatable
# Setup accessible (or protected) attributes for your model
attr_accessible :email, :firstname, :lastname, :password, :password_confirmation, :remember_me
end
Run Code Online (Sandbox Code Playgroud)
如果没有安全扩展(:validatable
而不是:secure_validatable
),我只会得到一次错误.
我究竟做错了什么?
PS奖金问题:
如何防止首先出现某些错误?我是否必须操纵设计的RegistrationsController或者有一个选项吗?
ruby 2.7 引入了无限范围。现在您可以拥有:
(..5)
(5..10)
(10..)
Run Code Online (Sandbox Code Playgroud)
对于整数,.include?
可以按预期工作:
(..5).include?(6) # false
(..5).include?(5) # true
(..5).include?(2) # true
(..5).include?(-100) # true
Run Code Online (Sandbox Code Playgroud)
但是,这不适用于日期范围:
(..Date.tomorrow).include?(Date.today) # RangeError (cannot get the first element of beginless range)
Run Code Online (Sandbox Code Playgroud)
有趣的是,它的作用相反:
(Date.yesterday..).include?(Date.today) # true
Run Code Online (Sandbox Code Playgroud)
最后:
(Date.yesterday..).include?(Date.today - 2.days) # Seems to loop forever.
Run Code Online (Sandbox Code Playgroud)
这是一种很奇怪的行为。所有 3 个案例都会带来不同的结果,并且只有其中 1 个案例真正按预期工作。
我的意思是,我想如果我们有一个具有某种“连续”逻辑的范围,那么可能很难检查是否包含在内,这是可以理解的。但像 Date 这样相对简单的类至少应该可以工作。无论如何,日期几乎就像一个整数。甚至 Float 也可以做到这一点,所以我不明白为什么 Date 或 DateTime 不应该这样做。
我的用例是数据库可能会为我正在查询的 2 个日期提供 nil 。这些是我想在一个范围内使用的开始和结束日期,但我不能确定其中一个可能不为零,这对我的逻辑来说很好,但这会导致一个无开始的范围,这可以处理不了.include?
。
我可以轻松地让我的用例通过一些手动丑陋的检查来工作,但这不是优雅的 ruby 方式。我在这里错过了什么吗?或者这应该是一个尚不存在的功能?