我正在尝试使用 CanCanCan 在我的 Rails 4 应用程序中定义能力。
我的能力.rb 文件中有这个能力:
can :read, Proposal,
{ :expiry_date > Time.now,
:sweep => { :disclosure => { :allusers => true } }
}
syntax error, unexpected ',', expecting =>
{ :expiry_date > Time.now,
当我尝试在 Time.now 之后删除逗号时,出现此错误:
syntax error, unexpected '\n', expecting =>
/Users/ml/f4/c2/app/models/ability.rb:107: syntax error, unexpected '}', expecting keyword_end
我不知道如何解读这些错误消息的含义以及它要我做什么。对于第一种格式,我不明白为什么用 => 替换逗号是正确的,因为需要针对该错误评估两个单独的属性。
对于第二个错误,我不明白为什么我会在那一点上“结束”,因为我有一长串需要进入课堂的其他能力。
我想知道这个错误是否与尝试使用 Time.now 参考有关。这不是能力文件中的有效功能吗?如果是这样,是否有其他方法可以查看属性中的日期是否晚于测试能力的日期?
当我尝试将其设置为块时,如下所示:
can :read, Proposal do | prop |
{:expiry_date > Time.now,
:sweep => { :disclosure => { :allusers => true } }
}
end
我收到此错误:
syntax error, unexpected ',', expecting =>
{:expiry_date > Time.now,
然后我又被卡住了,因为我不知道把 =>
当我尝试删除外部花括号时,该块显示为:
can :read, Proposal do | prop |
:expiry_date > Time.now,
:sweep => { :disclosure => { :allusers => true } }
end
我收到此错误:
syntax error, unexpected ',', expecting keyword_end
:expiry_date > Time.now,
所以,只是尝试随机的事情,我试图改变括号:
can :read, Proposal do | prop |
[:expiry_date > Time.now & :sweep => { :disclosure => { :allusers => true } } ]
end
(所以方括号而不是外层的花括号) - 我不再在那条线上停下来。我真的不明白为什么会这样(并且尚未在种子数据上对其进行测试),但它已经阻止了错误的抛出。
谢谢