我无法在Rails文档中找到这个,但似乎'mattr_accessor'是普通Ruby 类中'attr_accessor'(getter&setter)的模块推论.
例如.在课堂上
class User
attr_accessor :name
def set_fullname
@name = "#{self.first_name} #{self.last_name}"
end
end
Run Code Online (Sandbox Code Playgroud)
例如.在一个模块中
module Authentication
mattr_accessor :current_user
def login
@current_user = session[:user_id] || nil
end
end
Run Code Online (Sandbox Code Playgroud)
这个帮助方法由ActiveSupport提供.
我认为重要的是有一个" 撤销 "的方法ALA 的Gmail销毁记录的时候,而不是显示恼人的弹出,上面写着:" 你确定吗? ".
我实现这个的方法是在模型中有一个"deleted_at"时间戳列,当调用destroy方法时,它会被加上时间戳
def destroy
@foo = Foo.find(params[:id])
@foo.update_attribute(:deleted_at, Time.now)
...
end
Run Code Online (Sandbox Code Playgroud)
要恢复/撤消,我只需将同一列设置为nil
def revert
@foo = Foo.find(params[:id])
@foo.update_attribute(:deleted_at, nil)
...
end
Run Code Online (Sandbox Code Playgroud)
当我调用find方法时,我只需添加一个条件来过滤掉"已删除"的foos.也许设置一个cron或后台任务来在一段时间后真正破坏"已删除"的foos.
适合我,易于实现,但我很好奇是否有更好的方法来实现此功能?也许有一个插件或宝石提供我不知道的?
我有一个bash脚本,它运行一个ruby脚本来获取我的twitter提要.
## /home/username/twittercron
#!/bin/bash
cd /home/username/twitter
ruby twitter.rb friends
Run Code Online (Sandbox Code Playgroud)
它在命令行中成功运行.
/home/username/twittercron
Run Code Online (Sandbox Code Playgroud)
但是当我尝试将其作为cronjob运行时,它运行但无法获取提要.
## crontab -e
*/15 * * * * * /home/username/twittercron
Run Code Online (Sandbox Code Playgroud)
该脚本已经是chmod + x.不知道为什么会这样.有任何想法吗?