我正在创建一个没有用户身份验证系统的简单博客/新闻网站。我决定使用简单的秘密密钥检查技术,让知道密钥的访问者发帖。
简而言之,要发布,您必须提供密钥。否则,它不应该将对象保存到数据库中。
这是我的代码。
class Post < ActiveRecord::Base
attr_accessor :slaptazodis
validate :passcheck
validates :title, presence: true
validates :body, presence: true
def passcheck
if :slaptazodis != "1234"
errors.add(:base, 'Invalid pass')
end
end
end
所以,我在沙盒中创建了一个新模型,标题,正文和属性slaptazodis设置为1234.但是,当我检查错误时,控制台会一直显示“无效传递”。我究竟做错了什么?它是关于属性还是什么?提前谢谢你:)
答案 0 :(得分:1)
您应该考虑将该逻辑放在帖子模型之外并将其移动到控制器。
在控制器中,您可以检查用户发送的参数,例如
if params[:slaptazodis] != "1234"
但是,如果您正在学习rails并且只想使其与现有解决方案一起使用,请从以下位置进行更改:
if :slaptazodis != "1234"
为:
if slaptazodis != "1234"
“:”告诉Rails它应该考虑符号后面的字符(几乎与字符串相同)只是为了澄清,因此你的代码几乎同如:
if "slaptazodis" != "1234"
当然,这总是真实的。