我正在使用 Ruby on Rails 3.2.2,我想知道是否有办法检查在流程中是否设置了属性值。也就是说,我有一个Article
具有属性title
, content
,的类updater_user_id
。
在我的控制器中,我有:
# @article.title
# => "Sample title"
# @article.content
# => "Sample content"
# @article.updater_user_id
# => 1
# @current_user.id
# => 1 # Note: This value is the same as '@article.updater_user_id'
@article.updater_user_id = @current_user.id
# params[:article]
# => {:article => {:title => 'Sample title 2', :content => 'Sample content 2'}}
@article.update_attributes(params[:article])
我尝试使用该@article.changed
方法,但它不起作用,因为我希望它起作用。事实上,该方法返回:
@article.changed
# => ['title', 'content'] # Note: There isn't the 'updater_user_id' attribute
换句话说,我想检查是否updater_user_id
在流程中设置了,即使该值没有改变。我的用例是我想在保存对象之前要求updater_user_id
在流程中设置(至少一次);Article
如果在流程中没有设置它,那么我想提出一个错误或类似的东西。
可能吗?如果是这样,如何做到这一点?